mirror of
https://github.com/irmen/prog8.git
synced 2024-09-08 10:55:08 +00:00
word multiplications done
This commit is contained in:
parent
b8251b2e26
commit
cad42ddc05
@ -1267,6 +1267,25 @@ mul_byte_3 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_3 .proc
|
||||||
|
; W + W*2
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
clc
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
|
|
||||||
mul_byte_5 .proc
|
mul_byte_5 .proc
|
||||||
; X + X*4
|
; X + X*4
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1278,6 +1297,27 @@ mul_byte_5 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_5 .proc
|
||||||
|
; W + W*4
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
clc
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
|
|
||||||
mul_byte_6 .proc
|
mul_byte_6 .proc
|
||||||
; X*2 + X*4
|
; X*2 + X*4
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1290,6 +1330,30 @@ mul_byte_6 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_6 .proc
|
||||||
|
; W*2 + W*4
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.SCRATCH_ZPWORD2
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.SCRATCH_ZPWORD2+1
|
||||||
|
asl c64.SCRATCH_ZPWORD2
|
||||||
|
rol c64.SCRATCH_ZPWORD2+1
|
||||||
|
clc
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
adc c64.SCRATCH_ZPWORD2
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
adc c64.SCRATCH_ZPWORD2+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_7 .proc
|
mul_byte_7 .proc
|
||||||
; X*8 - X
|
; X*8 - X
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1302,6 +1366,29 @@ mul_byte_7 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_7 .proc
|
||||||
|
; W*8 - W
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sec
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sbc c64.ESTACK_LO+1,x
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
sbc c64.ESTACK_HI+1,x
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_9 .proc
|
mul_byte_9 .proc
|
||||||
; X + X*8
|
; X + X*8
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1314,6 +1401,28 @@ mul_byte_9 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_9 .proc
|
||||||
|
; W + W*8
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
clc
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_10 .proc
|
mul_byte_10 .proc
|
||||||
; X + X + X*8
|
; X + X + X*8
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1322,11 +1431,38 @@ mul_byte_10 .proc
|
|||||||
asl a
|
asl a
|
||||||
clc
|
clc
|
||||||
adc c64.ESTACK_LO+1,x
|
adc c64.ESTACK_LO+1,x
|
||||||
|
clc
|
||||||
adc c64.ESTACK_LO+1,x
|
adc c64.ESTACK_LO+1,x
|
||||||
sta c64.ESTACK_LO+1,x
|
sta c64.ESTACK_LO+1,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_10 .proc
|
||||||
|
; W*2 + W*8
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.SCRATCH_ZPWORD2
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.SCRATCH_ZPWORD2+1
|
||||||
|
asl c64.SCRATCH_ZPWORD2
|
||||||
|
rol c64.SCRATCH_ZPWORD2+1
|
||||||
|
asl c64.SCRATCH_ZPWORD2
|
||||||
|
rol c64.SCRATCH_ZPWORD2+1
|
||||||
|
clc
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
adc c64.SCRATCH_ZPWORD2
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
adc c64.SCRATCH_ZPWORD2+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_11 .proc
|
mul_byte_11 .proc
|
||||||
; X + X + X + X*8
|
; X + X + X + X*8
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1336,12 +1472,16 @@ mul_byte_11 .proc
|
|||||||
asl a
|
asl a
|
||||||
clc
|
clc
|
||||||
adc c64.SCRATCH_ZPREG
|
adc c64.SCRATCH_ZPREG
|
||||||
|
clc
|
||||||
adc c64.SCRATCH_ZPREG
|
adc c64.SCRATCH_ZPREG
|
||||||
|
clc
|
||||||
adc c64.SCRATCH_ZPREG
|
adc c64.SCRATCH_ZPREG
|
||||||
sta c64.ESTACK_LO+1,x
|
sta c64.ESTACK_LO+1,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
; mul_word_11 is skipped (too much code)
|
||||||
|
|
||||||
mul_byte_12 .proc
|
mul_byte_12 .proc
|
||||||
; X*4 + X*8
|
; X*4 + X*8
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1355,6 +1495,32 @@ mul_byte_12 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_12 .proc
|
||||||
|
; W*4 + W*8
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.SCRATCH_ZPWORD2
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.SCRATCH_ZPWORD2+1
|
||||||
|
asl c64.SCRATCH_ZPWORD2
|
||||||
|
rol c64.SCRATCH_ZPWORD2+1
|
||||||
|
clc
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
adc c64.SCRATCH_ZPWORD2
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
adc c64.SCRATCH_ZPWORD2+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_13 .proc
|
mul_byte_13 .proc
|
||||||
; X*16 - X -X -X
|
; X*16 - X -X -X
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1365,12 +1531,16 @@ mul_byte_13 .proc
|
|||||||
asl a
|
asl a
|
||||||
sec
|
sec
|
||||||
sbc c64.SCRATCH_ZPREG
|
sbc c64.SCRATCH_ZPREG
|
||||||
|
sec
|
||||||
sbc c64.SCRATCH_ZPREG
|
sbc c64.SCRATCH_ZPREG
|
||||||
|
sec
|
||||||
sbc c64.SCRATCH_ZPREG
|
sbc c64.SCRATCH_ZPREG
|
||||||
sta c64.ESTACK_LO+1,x
|
sta c64.ESTACK_LO+1,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
; mul_word_13 is skipped (too much code)
|
||||||
|
|
||||||
mul_byte_14 .proc
|
mul_byte_14 .proc
|
||||||
; X*16 - X -X
|
; X*16 - X -X
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1380,11 +1550,14 @@ mul_byte_14 .proc
|
|||||||
asl a
|
asl a
|
||||||
sec
|
sec
|
||||||
sbc c64.ESTACK_LO+1,x
|
sbc c64.ESTACK_LO+1,x
|
||||||
|
sec
|
||||||
sbc c64.ESTACK_LO+1,x
|
sbc c64.ESTACK_LO+1,x
|
||||||
sta c64.ESTACK_LO+1,x
|
sta c64.ESTACK_LO+1,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
; mul_word_14 is skipped (too much code)
|
||||||
|
|
||||||
mul_byte_15 .proc
|
mul_byte_15 .proc
|
||||||
; X*16 - X
|
; X*16 - X
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1399,6 +1572,30 @@ mul_byte_15 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_15 .proc
|
||||||
|
; W*16 - W
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
sec
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sbc c64.ESTACK_LO+1,x
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
sbc c64.ESTACK_HI+1,x
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_20 .proc
|
mul_byte_20 .proc
|
||||||
; X*4 + X*16
|
; X*4 + X*16
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1413,6 +1610,34 @@ mul_byte_20 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_20 .proc
|
||||||
|
; W*4 + W*16
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.SCRATCH_ZPWORD2
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.SCRATCH_ZPWORD2+1
|
||||||
|
asl c64.SCRATCH_ZPWORD2
|
||||||
|
rol c64.SCRATCH_ZPWORD2+1
|
||||||
|
asl c64.SCRATCH_ZPWORD2
|
||||||
|
rol c64.SCRATCH_ZPWORD2+1
|
||||||
|
clc
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
adc c64.SCRATCH_ZPWORD2
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
adc c64.SCRATCH_ZPWORD2+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_25 .proc
|
mul_byte_25 .proc
|
||||||
; X + X*8 + X*16
|
; X + X*8 + X*16
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1423,11 +1648,43 @@ mul_byte_25 .proc
|
|||||||
asl a
|
asl a
|
||||||
clc
|
clc
|
||||||
adc c64.SCRATCH_ZPREG
|
adc c64.SCRATCH_ZPREG
|
||||||
|
clc
|
||||||
adc c64.ESTACK_LO+1,x
|
adc c64.ESTACK_LO+1,x
|
||||||
sta c64.ESTACK_LO+1,x
|
sta c64.ESTACK_LO+1,x
|
||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_25 .proc
|
||||||
|
; W + W*8 + W*16
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
clc
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
clc
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
mul_byte_40 .proc
|
mul_byte_40 .proc
|
||||||
; X*8 + X*32
|
; X*8 + X*32
|
||||||
lda c64.ESTACK_LO+1,x
|
lda c64.ESTACK_LO+1,x
|
||||||
@ -1443,6 +1700,37 @@ mul_byte_40 .proc
|
|||||||
rts
|
rts
|
||||||
.pend
|
.pend
|
||||||
|
|
||||||
|
mul_word_40 .proc
|
||||||
|
; W*8 + W*32
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
sta c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
lda c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
asl c64.SCRATCH_ZPWORD1
|
||||||
|
rol c64.SCRATCH_ZPWORD1+1
|
||||||
|
clc
|
||||||
|
lda c64.ESTACK_LO+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1
|
||||||
|
sta c64.ESTACK_LO+1,x
|
||||||
|
lda c64.ESTACK_HI+1,x
|
||||||
|
adc c64.SCRATCH_ZPWORD1+1
|
||||||
|
sta c64.ESTACK_HI+1,x
|
||||||
|
rts
|
||||||
|
.pend
|
||||||
|
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -924,32 +924,28 @@ class AsmGen(val options: CompilationOptions, val program: IntermediateProgram,
|
|||||||
private fun optimizedIntMultiplicationsOnStack(mulIns: Instruction, amount: Int): String? {
|
private fun optimizedIntMultiplicationsOnStack(mulIns: Instruction, amount: Int): String? {
|
||||||
|
|
||||||
if(mulIns.opcode == Opcode.MUL_B || mulIns.opcode==Opcode.MUL_UB) {
|
if(mulIns.opcode == Opcode.MUL_B || mulIns.opcode==Opcode.MUL_UB) {
|
||||||
when(amount) {
|
if(amount in setOf(0,1,2,4,8,16,32,64,128,256))
|
||||||
0,1,2,4,8,16,32,64,128,256 -> throw AssemblyError("multiplication by power of 2 should have been converted into a left shift instruction already")
|
throw AssemblyError("multiplication by power of 2 should have been converted into a left shift instruction already")
|
||||||
3,5,6,7,9,10,11,12,13,14,15,20,25,40 -> return " jsr math.mul_byte_$amount"
|
|
||||||
else -> {}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(mulIns.opcode == Opcode.MUL_B) {
|
if(amount in setOf(3,5,6,7,9,10,11,12,13,14,15,20,25,40))
|
||||||
when(amount) {
|
return " jsr math.mul_byte_$amount"
|
||||||
-3,-5,-6,-7,-9,-10,-11,-12,-13,-14,-15,-20,-25,-40 -> return " jsr prog8_lib.neg_b | jsr math.mul_byte_${-amount}"
|
|
||||||
else -> {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(mulIns.opcode == Opcode.MUL_W || mulIns.opcode==Opcode.MUL_UW) {
|
|
||||||
when(amount) {
|
|
||||||
0,1,2,4,8,16,32,64,128,256 -> throw AssemblyError("multiplication by power of 2 should have been converted into a left shift instruction already")
|
|
||||||
3,5,6,7,9,10,11,12,13,14,15,20,25,40 -> return " jsr math.mul_word_$amount"
|
|
||||||
else -> {}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(mulIns.opcode == Opcode.MUL_W) {
|
if(mulIns.opcode == Opcode.MUL_B && amount in setOf(-3,-5,-6,-7,-9,-10,-11,-12,-13,-14,-15,-20,-25,-40))
|
||||||
when(amount) {
|
return " jsr prog8_lib.neg_b | jsr math.mul_byte_${-amount}"
|
||||||
-3,-5,-6,-7,-9,-10,-11,-12,-13,-14,-15,-20,-25,-40 -> return " jsr prog8_lib.neg_w | jsr math.mul_word_${-amount}"
|
|
||||||
else -> {}
|
|
||||||
}
|
}
|
||||||
|
else if(mulIns.opcode == Opcode.MUL_UW) {
|
||||||
|
if(amount in setOf(0,1,2,4,8,16,32,64,128,256))
|
||||||
|
throw AssemblyError("multiplication by power of 2 should have been converted into a left shift instruction already")
|
||||||
|
if(amount in setOf(3,5,6,7,9,10,12,15,20,25,40))
|
||||||
|
return " jsr math.mul_word_$amount"
|
||||||
}
|
}
|
||||||
|
else if(mulIns.opcode == Opcode.MUL_W) {
|
||||||
|
if(amount in setOf(0,1,2,4,8,16,32,64,128,256))
|
||||||
|
throw AssemblyError("multiplication by power of 2 should have been converted into a left shift instruction already")
|
||||||
|
if(amount in setOf(3,5,6,7,9,10,12,15,20,25,40))
|
||||||
|
return " jsr math.mul_word_$amount"
|
||||||
|
if(amount in setOf(-3,-5,-6,-7,-9,-10,-12,-15,-20,-25,-40))
|
||||||
|
return " jsr prog8_lib.neg_w | jsr math.mul_word_${-amount}"
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
for ubyte i in 0 to len(xcoor)-1 {
|
for ubyte i in 0 to len(xcoor)-1 {
|
||||||
rotatedx[i] = (Axx*xcoor[i] + Axy*ycoor[i] + Axz*zcoor[i]) / 128
|
rotatedx[i] = (Axx*xcoor[i] + Axy*ycoor[i] + Axz*zcoor[i]) / 128
|
||||||
rotatedy[i] =(Ayx*xcoor[i] + Ayy*ycoor[i] + Ayz*zcoor[i]) / 128
|
rotatedy[i] = (Ayx*xcoor[i] + Ayy*ycoor[i] + Ayz*zcoor[i]) / 128
|
||||||
rotatedz[i] = (Azx*xcoor[i] + Azy*ycoor[i] + Azz*zcoor[i]) / 128
|
rotatedz[i] = (Azx*xcoor[i] + Azy*ycoor[i] + Azz*zcoor[i]) / 128
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
530
examples/test.p8
530
examples/test.p8
@ -1,5 +1,4 @@
|
|||||||
%import c64utils
|
%import c64utils
|
||||||
%import c64flt
|
|
||||||
|
|
||||||
~ main {
|
~ main {
|
||||||
|
|
||||||
@ -13,23 +12,520 @@
|
|||||||
uword uw2
|
uword uw2
|
||||||
word w = 1000
|
word w = 1000
|
||||||
word w2
|
word w2
|
||||||
float f1 = 1.1
|
|
||||||
float f2 = 2.2
|
|
||||||
|
|
||||||
b2 = j + (-1)
|
; i=10
|
||||||
b2 = (-1) + j
|
; ub2=i*1
|
||||||
b2 = j - (-1)
|
; c64scr.print_ub(ub2)
|
||||||
b2 = (-1) -j ; should not be reordered
|
; c64.CHROUT('\n')
|
||||||
b2 = j+1
|
; ub2=i*2
|
||||||
b2 = 1+j
|
; c64scr.print_ub(ub2)
|
||||||
b2 = 1-j ; should not be reordered
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*3
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*4
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*5
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*6
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*7
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*8
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*9
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*10
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*11
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*12
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*13
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*14
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*15
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*16
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*17
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*18
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*19
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*20
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*21
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*22
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*23
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*24
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; ub2=i*25
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
; i=5
|
||||||
|
; ub2=i*40
|
||||||
|
; c64scr.print_ub(ub2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; j=5
|
||||||
|
; b2=j*1
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*2
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*3
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*4
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*5
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*6
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*7
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*8
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*9
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*10
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*11
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*12
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*13
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*14
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*15
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*16
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*17
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*18
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*19
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*20
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*21
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*22
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*23
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*24
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*25
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
; j=3
|
||||||
|
; b2=j*40
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; ; multiplication by negative values
|
||||||
|
; j=5
|
||||||
|
; b2=j*-1
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-2
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-3
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-4
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-5
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-6
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-7
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-8
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-9
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-10
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-11
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-12
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-13
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-14
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-15
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-16
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-17
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-18
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-19
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-20
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-21
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-22
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-23
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-24
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
; b2=j*-25
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
; j=3
|
||||||
|
; b2=j*-40
|
||||||
|
; c64scr.print_b(b2)
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
;
|
||||||
|
; c64.CHROUT('\n')
|
||||||
|
|
||||||
|
|
||||||
|
;@todo the same, for uword and word
|
||||||
|
|
||||||
|
uw=1000
|
||||||
|
uw2=uw*1
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*2
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*3
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*4
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*5
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*6
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*7
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*8
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*9
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*10
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*11
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*12
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*13
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*14
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*15
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*16
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*17
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*18
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*19
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*20
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*21
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*22
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*23
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*24
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
uw2=uw*25
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
uw=500
|
||||||
|
uw2=uw*40
|
||||||
|
c64scr.print_uw(uw2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
|
||||||
|
w=500
|
||||||
|
w2=w*1
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*2
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*3
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*4
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*5
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*6
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*7
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*8
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*9
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*10
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*11
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*12
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*13
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*14
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*15
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*16
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*17
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*18
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*19
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*20
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*21
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*22
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*23
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*24
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*25
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
w=500
|
||||||
|
w2=w*40
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
|
||||||
|
; multuwpluwcatuwon by negatuwve values
|
||||||
|
w=500
|
||||||
|
w2=w*-1
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-2
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-3
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-4
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-5
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-6
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-7
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-8
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-9
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-10
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-11
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-12
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-13
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-14
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-15
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-16
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-17
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-18
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-19
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-20
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-21
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-22
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-23
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-24
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
w2=w*-25
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
w=500
|
||||||
|
w2=w*-40
|
||||||
|
c64scr.print_w(w2)
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
c64.CHROUT('\n')
|
||||||
|
|
||||||
|
|
||||||
j = j + (-1)
|
|
||||||
j = (-1) + j
|
|
||||||
j = j - (-1)
|
|
||||||
j = (-1) -j ; should not be reordered
|
|
||||||
j = j+1
|
|
||||||
j = 1+j
|
|
||||||
j = 1-j ; should not be reordered
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user