Skip to content

Commit 273099b

Browse files
Allow 0-arg functions
1 parent 66de27e commit 273099b

10 files changed

Lines changed: 31 additions & 43 deletions

File tree

expect_tests/functions.exp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ PRINT INT(3.9),INT(-3.1),INT(-3.9)
155155
test {
156156
PRINT INT()
157157
} {
158-
ERR: SYNTAX
158+
ERR: ARITY?
159159
}
160160

161161
test {
@@ -173,7 +173,7 @@ PRINT ABS(3.14), ABS(-3.14), ABS(0)
173173
test {
174174
PRINT ABS()
175175
} {
176-
ERR: SYNTAX
176+
ERR: ARITY?
177177
}
178178

179179
test {
@@ -191,7 +191,7 @@ PRINT SGN(5),SGN(-5),SGN(0)
191191
test {
192192
PRINT SGN()
193193
} {
194-
ERR: SYNTAX
194+
ERR: ARITY?
195195
}
196196

197197
test {
@@ -201,12 +201,11 @@ ERR: ARITY?
201201
}
202202

203203
# FRE
204-
# TODO: FRE(0) returns negative value in sim65 due to 16-bit signed integer limits.
205-
# test {
206-
# PRINT FRE(0) > 0
207-
# } {
208-
# 1
209-
# }
204+
test {
205+
PRINT FRE()<0 OR FRE()>0
206+
} {
207+
1
208+
}
210209

211210
# RND
212211

expect_tests/peek_poke.exp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ READY
3232
test {
3333
PRINT PEEK()
3434
} {
35-
ERR: SYNTAX
35+
ERR: ARITY?
3636
}
3737

3838
test {
@@ -66,7 +66,7 @@ READY
6666
test {
6767
PRINT DPEEK()
6868
} {
69-
ERR: SYNTAX
69+
ERR: ARITY?
7070
}
7171

7272
test {

expect_tests/trig.exp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@ spawn_basic
1010
test "PRINT SIN(0)\n" "0\n"
1111
test "PRINT SIN(1)\n" "0.841470985\n"
1212

13-
test "PRINT SIN()\n" "ERR: SYNTAX\n"
13+
test "PRINT SIN()\n" "ERR: ARITY?\n"
1414
test "PRINT SIN(1, 2)\n" "ERR: ARITY?\n"
1515

1616
# COS
1717

1818
test "PRINT COS(0)\n" "1\n"
1919
test "PRINT COS(1)\n" "0.540301189\n"
2020

21-
test "PRINT COS()\n" "ERR: SYNTAX\n"
21+
test "PRINT COS()\n" "ERR: ARITY?\n"
2222
test "PRINT COS(1, 2)\n" "ERR: ARITY?\n"
2323

2424
# TAN
2525

2626
test "PRINT TAN(0)\n" "0\n"
2727
test "PRINT TAN(1)\n" "1.55741094\n"
2828

29-
test "PRINT TAN()\n" "ERR: SYNTAX\n"
29+
test "PRINT TAN()\n" "ERR: ARITY?\n"
3030
test "PRINT TAN(1, 2)\n" "ERR: ARITY?\n"
3131

3232
# ATN
@@ -37,7 +37,7 @@ test "PRINT ATN(0.5)\n" "0.463647609\n"
3737
test "PRINT ATN(2)\n" "1.10714739\n"
3838
test "PRINT ATN(-1)\n" "-0.785398163\n"
3939

40-
test "PRINT ATN()\n" "ERR: SYNTAX\n"
40+
test "PRINT ATN()\n" "ERR: ARITY?\n"
4141
test "PRINT ATN(1, 2)\n" "ERR: ARITY?\n"
4242

4343
# LOG
@@ -51,15 +51,15 @@ PRINT LOG(-1)
5151
ERR: RANGE
5252
}
5353

54-
test "PRINT LOG()\n" "ERR: SYNTAX\n"
54+
test "PRINT LOG()\n" "ERR: ARITY?\n"
5555
test "PRINT LOG(1, 2)\n" "ERR: ARITY?\n"
5656

5757
# EXP
5858

5959
test "PRINT EXP(0)\n" "1\n"
6060
test "PRINT EXP(1)\n" "2.71828182\n"
6161

62-
test "PRINT EXP()\n" "ERR: SYNTAX\n"
62+
test "PRINT EXP()\n" "ERR: ARITY?\n"
6363
test "PRINT EXP(1, 2)\n" "ERR: ARITY?\n"
6464

6565
# SQR
@@ -73,5 +73,5 @@ PRINT SQR(-1)
7373
ERR: RANGE
7474
}
7575

76-
test "PRINT SQR()\n" "ERR: SYNTAX\n"
76+
test "PRINT SQR()\n" "ERR: ARITY?\n"
7777
test "PRINT SQR(1, 2)\n" "ERR: ARITY?\n"

src/expression.s

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,9 @@ evaluate_unary_operator:
222222

223223
evaluate_argument_list:
224224
pha ; Save expected count
225+
jsr peek_byte
226+
cmp #')'
227+
beq @done
225228
@loop:
226229
jsr evaluate_expression
227230
tsx

src/functions.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function_table:
2222
.word fun_val-1
2323
.byte 1 | PROLOG_POP_STRING | EPILOG_PUSH_FP
2424
.word fun_fre-1
25-
.byte 1 | PROLOG_POP_FP | EPILOG_PUSH_INT
25+
.byte 0 | EPILOG_PUSH_INT
2626
.word fun_peek-1
2727
.byte 1 | PROLOG_POP_INT | EPILOG_PUSH_INT
2828
.word fun_dpeek-1

src/parser.s

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -609,22 +609,18 @@ pvm_arg_2:
609609
ARGSEP
610610
JUMP pvm_expression
611611

612-
; pvm_arg_list is list of 1-N (but not 0) expressions.
612+
; pvm_paren_arg_list is a list of expressions surrounded by parentheses.
613613

614-
pvm_arg_list:
614+
pvm_paren_arg_list:
615+
WS
616+
MATCH '('
617+
@loop:
618+
TRY @done
615619
CALL pvm_expression
616620
TRY @done
617621
ARGSEP
618-
JUMP pvm_arg_list
622+
JUMP @loop
619623
@done:
620-
RETURN
621-
622-
; pvm_paren_arg_list is a list of 1-N (but not 0) expressions surrounded by parentheses.
623-
624-
pvm_paren_arg_list:
625-
WS
626-
MATCH '('
627-
CALL pvm_arg_list
628624
WS
629625
MATCH ')'
630626
RETURN

src/run.s

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,3 @@ exec_cont:
4242
raieq ERR_CONT_WITHOUT_STOP
4343
mva resume_line_pos, next_line_pos
4444
jmp raise_ps_running
45-
46-
; NEW statment:
47-
; Clears the program from memory, which also has the effect of stopping the program as if END.
48-
49-
exec_new:
50-
jsr initialize_program
51-
clc
52-
rts

src/statements.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ statement_vectors:
3636
.word exec_next-1
3737
.word exec_stop-1
3838
.word exec_cont-1
39-
.word exec_new-1
39+
.word initialize_program-1
4040
.word clear_variables-1
4141
.word exec_dim-1
4242
.word exec_rem-1

targets/apple2/apple2_startup.s

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ startup:
1212
ldx #$FF
1313
txs ; Initialize the stack to $FF
1414
jsr initialize_target
15-
jsr main
16-
jmp DOSWARM ; Exit to resident program
15+
jmp main
1716

1817

1918
.code

targets/sim6502/sim6502_startup.s

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ startup:
1919
txs ; Initialize the stack to $FF
2020
mvax #(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__), c_sp
2121
jsr initialize_target
22-
jsr main
23-
jmp exit ; Return 0 from sim65
22+
jmp main
2423

2524
.code

0 commit comments

Comments
 (0)