|
- jp test
-
- .inc "core.asm"
- .inc "str.asm"
- .inc "lib/util.asm"
- .inc "lib/ari.asm"
- .inc "lib/parse.asm"
- .equ EXPR_PARSE parseLiteral
- .inc "lib/expr.asm"
- .inc "basic/parse.asm"
-
- test:
- ld sp, 0xffff
-
- call testParseThruth
-
- ; success
- xor a
- halt
-
- testParseThruth:
- ld hl, .t1
- call .true
- ld hl, .t2
- call .true
- ld hl, .t3
- call .true
- ld hl, .t4
- call .true
- ld hl, .t5
- call .true
- ld hl, .t6
- call .true
- ld hl, .t7
- call .true
- ld hl, .t8
- call .true
-
- ld hl, .f1
- call .false
- ld hl, .f2
- call .false
- ld hl, .f3
- call .false
- ld hl, .f4
- call .false
- ld hl, .f5
- call .false
- ld hl, .f6
- call .false
-
- ld hl, .e1
- call .error
- ret
-
- .true:
- call parseTruth
- jp nz, fail
- or a
- jp z, fail
- jp nexttest
-
- .false:
- call parseTruth
- jp nz, fail
- or a
- jp nz, fail
- jp nexttest
-
- .error:
- call parseTruth
- jp z, fail
- jp nexttest
-
- .t1: .db "42", 0
- .t2: .db "42+4=50-4", 0
- .t3: .db "1<2", 0
- .t4: .db "2>1", 0
- .t5: .db "2>=1", 0
- .t6: .db "2>=2", 0
- .t7: .db "1<=2", 0
- .t8: .db "2<=2", 0
- .f1: .db "42-42", 0
- .f2: .db "42+4=33+2", 0
- .f3: .db "2<2", 0
- .f4: .db "1>2", 0
- .f5: .db "1>=2", 0
- .f6: .db "2<=1", 0
- .e1: .db "foo", 0
-
- testNum: .db 1
-
- nexttest:
- ld a, (testNum)
- inc a
- ld (testNum), a
- ret
-
- fail:
- ld a, (testNum)
- halt
-
- ; used as RAM
- sandbox:
|