mirror of
https://github.com/irmen/prog8.git
synced 2024-12-25 23:29:55 +00:00
corrected greatereq_w (word >= word)
This commit is contained in:
parent
57ac820767
commit
d0d0910bf2
@ -541,7 +541,6 @@ _true lda #1
|
||||
.pend
|
||||
|
||||
lesseq_uw .proc
|
||||
; TODO is this comparison uword <= correct????
|
||||
lda P8ESTACK_HI+1,x
|
||||
cmp P8ESTACK_HI+2,x
|
||||
bcc equal_b._equal_b_false
|
||||
@ -652,15 +651,14 @@ greatereq_uw .proc
|
||||
.pend
|
||||
|
||||
greatereq_w .proc
|
||||
; TODO IS THIS CORRECT???
|
||||
lda P8ESTACK_LO+2,x
|
||||
cmp P8ESTACK_LO+1,x
|
||||
lda P8ESTACK_HI+2,x
|
||||
sbc P8ESTACK_HI+1,x
|
||||
bvc +
|
||||
eor #$80
|
||||
+ bpl equal_b._equal_b_true
|
||||
bmi equal_b._equal_b_false
|
||||
+ bmi equal_b._equal_b_false
|
||||
bpl equal_b._equal_b_true
|
||||
.pend
|
||||
|
||||
|
||||
|
566
examples/test.p8
566
examples/test.p8
@ -6,9 +6,555 @@
|
||||
main {
|
||||
|
||||
sub start() {
|
||||
|
||||
; word_less()
|
||||
word_less()
|
||||
word_lessequal()
|
||||
word_greaterequal()
|
||||
word_greater()
|
||||
uword_lessequal()
|
||||
}
|
||||
|
||||
sub uword_lessequal() {
|
||||
uword lessvar
|
||||
uword comparevar
|
||||
|
||||
txt.print("uword <=\n")
|
||||
|
||||
txt.print_uw(65535)
|
||||
txt.chrout('\n')
|
||||
check_lesseq_uw(0, 65535)
|
||||
txt.print_uw(0)
|
||||
txt.chrout('\n')
|
||||
check_not_lesseq_uw(65535, 0)
|
||||
|
||||
comparevar = 65535
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in comparevar downto 0 {
|
||||
check_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 65535-2
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in comparevar downto 0 {
|
||||
check_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 65535-254
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in comparevar downto 0 {
|
||||
check_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 65535-255
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in comparevar downto 0 {
|
||||
check_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 65535-256
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in comparevar downto 0 {
|
||||
check_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 65535-5000
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in comparevar downto 0 {
|
||||
check_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 32769
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in comparevar downto 0 {
|
||||
check_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
|
||||
comparevar = 32768
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in 65535 downto comparevar+1 {
|
||||
check_not_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 1
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in 65535 downto comparevar+1 {
|
||||
check_not_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 0
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in 65535 downto comparevar+1 {
|
||||
check_not_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 11111
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in 65535 downto comparevar+1 {
|
||||
check_not_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 255
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in 65535 downto comparevar+1 {
|
||||
check_not_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 256
|
||||
txt.print_uw(comparevar)
|
||||
txt.chrout('\n')
|
||||
for lessvar in 65535 downto comparevar+1 {
|
||||
check_not_lesseq_uw(lessvar, comparevar)
|
||||
}
|
||||
|
||||
|
||||
test_stack.test()
|
||||
return
|
||||
|
||||
sub check_lesseq_uw(uword w1, uword w2) {
|
||||
uword zero = 0
|
||||
ubyte error=0
|
||||
|
||||
ubyte ub = w1<=w2
|
||||
if not ub {
|
||||
error++
|
||||
txt.print("ub!")
|
||||
}
|
||||
|
||||
if w1<=(w2+zero) {
|
||||
zero = 0 ; dummy
|
||||
} else {
|
||||
error++
|
||||
txt.print("c!")
|
||||
}
|
||||
|
||||
if error {
|
||||
txt.print(" ")
|
||||
txt.print_uw(w1)
|
||||
txt.print(" <= ")
|
||||
txt.print_uw(w2)
|
||||
txt.chrout('\n')
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
sub check_not_lesseq_uw(uword w1, uword w2) {
|
||||
uword zero = 0
|
||||
ubyte error=0
|
||||
|
||||
ubyte ub = w1<=w2
|
||||
if ub {
|
||||
error++
|
||||
txt.print("ub!")
|
||||
}
|
||||
|
||||
if w1<=(w2+zero) {
|
||||
error++
|
||||
txt.print("c!")
|
||||
} else {
|
||||
zero = 0 ; dummy
|
||||
}
|
||||
|
||||
if error {
|
||||
txt.print(" ")
|
||||
txt.print_uw(w1)
|
||||
txt.print(" not <= ")
|
||||
txt.print_uw(w2)
|
||||
txt.chrout('\n')
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub word_greater() {
|
||||
word biggervar
|
||||
word comparevar
|
||||
|
||||
txt.print("word >\n")
|
||||
|
||||
txt.print_w(-32767)
|
||||
txt.chrout('\n')
|
||||
check_greater_w(32767, -32767)
|
||||
txt.print_w(32766)
|
||||
txt.chrout('\n')
|
||||
check_not_greater_w(-32766, 32766)
|
||||
|
||||
comparevar = 32765
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar downto -32768 {
|
||||
check_not_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -1
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar downto -32768 {
|
||||
check_not_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 0
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar downto -32768 {
|
||||
check_not_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 11111
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar downto -32768 {
|
||||
check_not_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 0
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -2
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -254
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -255
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -256
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -5000
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 1
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 255
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 256
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 257
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 32760
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar+1 {
|
||||
check_greater_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
|
||||
test_stack.test()
|
||||
return
|
||||
|
||||
sub check_greater_w(word w1, word w2) {
|
||||
word zero = 0
|
||||
ubyte error=0
|
||||
|
||||
ubyte ub = w1>(w2+zero)
|
||||
if not ub {
|
||||
error++
|
||||
txt.print("ubz!")
|
||||
}
|
||||
|
||||
ub = w1>w2
|
||||
if not ub {
|
||||
error++
|
||||
txt.print("ub!")
|
||||
}
|
||||
|
||||
if w1>(w2+zero) {
|
||||
zero = 0 ; dummy
|
||||
} else {
|
||||
error++
|
||||
txt.print("c!")
|
||||
}
|
||||
|
||||
if error {
|
||||
txt.print(" ")
|
||||
txt.print_w(w1)
|
||||
txt.print(" > ")
|
||||
txt.print_w(w2)
|
||||
txt.chrout('\n')
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
sub check_not_greater_w(word w1, word w2) {
|
||||
word zero = 0
|
||||
ubyte error=0
|
||||
|
||||
ubyte ub = w1>w2
|
||||
if ub {
|
||||
error++
|
||||
txt.print("ub!")
|
||||
}
|
||||
|
||||
if w1>(w2+zero) {
|
||||
error++
|
||||
txt.print("c!")
|
||||
} else {
|
||||
zero = 0 ; dummy
|
||||
}
|
||||
|
||||
if w1>w2 {
|
||||
error++
|
||||
txt.print("c2!")
|
||||
} else {
|
||||
zero = 0 ; dummy
|
||||
}
|
||||
|
||||
if error {
|
||||
txt.print(" ")
|
||||
txt.print_w(w1)
|
||||
txt.print(" not > ")
|
||||
txt.print_w(w2)
|
||||
txt.chrout('\n')
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub word_greaterequal() {
|
||||
word biggervar
|
||||
word comparevar
|
||||
|
||||
txt.print("word >=\n")
|
||||
|
||||
txt.print_w(-32767)
|
||||
txt.chrout('\n')
|
||||
check_greatereq_w(32767, -32767)
|
||||
txt.print_w(32766)
|
||||
txt.chrout('\n')
|
||||
check_not_greatereq_w(-32766, 32766)
|
||||
|
||||
comparevar = 32765
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar-1 downto -32768 {
|
||||
check_not_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -1
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar-1 downto -32768 {
|
||||
check_not_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 0
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar-1 downto -32768 {
|
||||
check_not_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 11111
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in comparevar-1 downto -32768 {
|
||||
check_not_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 0
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -2
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -254
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -255
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -256
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = -5000
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 1
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 255
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 256
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 257
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
comparevar = 32767
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
for biggervar in 32767 downto comparevar {
|
||||
check_greatereq_w(biggervar, comparevar)
|
||||
}
|
||||
|
||||
|
||||
test_stack.test()
|
||||
return
|
||||
|
||||
sub check_greatereq_w(word w1, word w2) {
|
||||
word zero = 0
|
||||
ubyte error=0
|
||||
|
||||
ubyte ub = w1>=(w2+zero)
|
||||
if not ub {
|
||||
error++
|
||||
txt.print("ubz!")
|
||||
}
|
||||
|
||||
ub = w1>=w2
|
||||
if not ub {
|
||||
error++
|
||||
txt.print("ub!")
|
||||
}
|
||||
|
||||
if w1>=(w2+zero) {
|
||||
zero = 0 ; dummy
|
||||
} else {
|
||||
error++
|
||||
txt.print("c!")
|
||||
}
|
||||
|
||||
if error {
|
||||
txt.print(" ")
|
||||
txt.print_w(w1)
|
||||
txt.print(" >= ")
|
||||
txt.print_w(w2)
|
||||
txt.chrout('\n')
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
sub check_not_greatereq_w(word w1, word w2) {
|
||||
word zero = 0
|
||||
ubyte error=0
|
||||
|
||||
ubyte ub = w1>=w2
|
||||
if ub {
|
||||
error++
|
||||
txt.print("ub!")
|
||||
}
|
||||
|
||||
if w1>=(w2+zero) {
|
||||
error++
|
||||
txt.print("c!")
|
||||
} else {
|
||||
zero = 0 ; dummy
|
||||
}
|
||||
|
||||
if w1>=w2 {
|
||||
error++
|
||||
txt.print("c2!")
|
||||
} else {
|
||||
zero = 0 ; dummy
|
||||
}
|
||||
|
||||
if error {
|
||||
txt.print(" ")
|
||||
txt.print_w(w1)
|
||||
txt.print(" not >= ")
|
||||
txt.print_w(w2)
|
||||
txt.chrout('\n')
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub word_lessequal() {
|
||||
@ -16,6 +562,14 @@ main {
|
||||
word comparevar
|
||||
|
||||
txt.print("word <=\n")
|
||||
|
||||
txt.print_w(32767)
|
||||
txt.chrout('\n')
|
||||
check_lesseq_w(-32767, 32767)
|
||||
txt.print_w(-32767)
|
||||
txt.chrout('\n')
|
||||
check_not_lesseq_w(32767, -32767)
|
||||
|
||||
comparevar = 0
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
@ -185,6 +739,14 @@ main {
|
||||
word comparevar
|
||||
|
||||
txt.print("word <\n")
|
||||
|
||||
txt.print_w(32767)
|
||||
txt.chrout('\n')
|
||||
check_less_w(-32767, 32767)
|
||||
txt.print_w(-32767)
|
||||
txt.chrout('\n')
|
||||
check_not_less_w(32767, -32767)
|
||||
|
||||
comparevar = 0
|
||||
txt.print_w(comparevar)
|
||||
txt.chrout('\n')
|
||||
|
Loading…
Reference in New Issue
Block a user