Skip to content

Commit 163f1b3

Browse files
committed
Adds token PUSH_NUM, and peephole rule to use it.
1 parent 3646f2b commit 163f1b3

3 files changed

Lines changed: 18 additions & 4 deletions

File tree

src/basic.syn

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ TOKENS {
2727
TOK_BYTE_SADDR, TOK_SHL8, TOK_0, TOK_1
2828
# PUSH plus composed PUSH ops
2929
TOK_PUSH, TOK_PUSH_VAR_LOAD
30-
TOK_PUSH_BYTE, TOK_PUSH_0, TOK_PUSH_1
30+
TOK_PUSH_NUM, TOK_PUSH_BYTE, TOK_PUSH_0, TOK_PUSH_1
3131
# Numeric operators
3232
TOK_NEG, TOK_ABS, TOK_SGN, TOK_ADD, TOK_SUB, TOK_MUL, TOK_DIV, TOK_MOD
3333
# Bitwise operators
@@ -419,8 +419,8 @@ POSITION:
419419
# SOUND voice
420420
# SOUND
421421
SOUND:
422-
EXPR emit TOK_USHL emit TOK_PUSH emit TOK_NUM word AUDF1 emit TOK_ADD emit TOK_SADDR "," EXPR emit TOK_PUSH EXPR_AB emit TOK_SHL8 emit TOK_ADD emit TOK_DPOKE emit TOK_NUM word AUDCTL emit TOK_SADDR emit TOK_0 emit TOK_POKE emit TOK_NUM word SKCTL emit TOK_SADDR emit TOK_BYTE emit 3 emit TOK_POKE
423-
EXPR emit TOK_USHL emit TOK_PUSH emit TOK_NUM word AUDF1 emit TOK_ADD emit TOK_SADDR emit TOK_0 emit TOK_DPOKE
422+
EXPR emit TOK_USHL emit TOK_PUSH_NUM word AUDF1 emit TOK_ADD emit TOK_SADDR "," EXPR emit TOK_PUSH EXPR_AB emit TOK_SHL8 emit TOK_ADD emit TOK_DPOKE emit TOK_NUM word AUDCTL emit TOK_SADDR emit TOK_0 emit TOK_POKE emit TOK_NUM word SKCTL emit TOK_SADDR emit TOK_BYTE emit 3 emit TOK_POKE
423+
EXPR emit TOK_USHL emit TOK_PUSH_NUM word AUDF1 emit TOK_ADD emit TOK_SADDR emit TOK_0 emit TOK_DPOKE
424424
emit TOK_SOUND_OFF
425425

426426
# Word Arrays
@@ -578,7 +578,7 @@ PARSE_LINE_COMMAND:
578578
"PLot" POSITION emit TOK_PLOT
579579
"DRawto" POSITION emit TOK_BYTE emit DRAWLN emit TOK_DRAWTO
580580
"FIllto" POSITION emit TOK_BYTE emit FILLIN emit TOK_DRAWTO
581-
"SEtcolor" EXPR emit TOK_PUSH emit TOK_NUM word COLOR0 emit TOK_ADD emit TOK_SADDR EXPR_AB emit TOK_POKE
581+
"SEtcolor" EXPR emit TOK_PUSH_NUM word COLOR0 emit TOK_ADD emit TOK_SADDR EXPR_AB emit TOK_POKE
582582
"Sound" SOUND
583583
"DIm" DIM_VAR DIM_MORE
584584
"CLose" IO_CHAN emit TOK_CLOSE

src/compiler/peephole.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,10 @@ class peephole
227227
{
228228
set_tok(0, TOK_BYTE); ins_tok(0, TOK_PUSH);
229229
}
230+
else if( mtok(0,TOK_PUSH_NUM) )
231+
{
232+
set_tok(0, TOK_NUM); ins_tok(0, TOK_PUSH);
233+
}
230234
else if( mtok(0,TOK_PUSH_0) )
231235
{
232236
set_tok(0, TOK_0); ins_tok(0, TOK_PUSH);
@@ -262,6 +266,11 @@ class peephole
262266
{
263267
set_tok(1, TOK_PUSH_BYTE); del(0);
264268
}
269+
// TOK_NUM
270+
else if( mtok(1,TOK_NUM) )
271+
{
272+
set_tok(1, TOK_PUSH_NUM); del(0);
273+
}
265274
// TOK_1
266275
else if( mtok(1,TOK_1) )
267276
{

src/interp/const.asm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232

3333
.segment "RUNTIME"
3434

35+
.proc EXE_PUSH_NUM ; push AX, load NUM
36+
jsr pushAX
37+
.endproc ; Fall through
38+
3539
.proc EXE_NUM ; AX = read from op (load byte first!)
3640
ldy #1 ; 2 2
3741
lda (cptr), y ; 5 2
@@ -86,6 +90,7 @@ xit: jmp next_instruction
8690
.include "../deftok.inc"
8791
deftoken "NUM"
8892
deftoken "BYTE"
93+
deftoken "PUSH_NUM"
8994
deftoken "PUSH_BYTE"
9095
deftoken "BYTE_SADDR"
9196
deftoken "CSTRING"

0 commit comments

Comments
 (0)