mirror of
https://github.com/irmen/prog8.git
synced 2024-10-01 07:55:51 +00:00
word multiplications done
This commit is contained in:
parent
b8251b2e26
commit
cad42ddc05
@ -1266,6 +1266,25 @@ mul_byte_3 .proc
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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
|
||||
; X + X*4
|
||||
@ -1277,6 +1296,27 @@ mul_byte_5 .proc
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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
|
||||
; X*2 + X*4
|
||||
@ -1289,7 +1329,31 @@ mul_byte_6 .proc
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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
|
||||
; X*8 - X
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1302,6 +1366,29 @@ mul_byte_7 .proc
|
||||
rts
|
||||
.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
|
||||
; X + X*8
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1314,6 +1401,28 @@ mul_byte_9 .proc
|
||||
rts
|
||||
.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
|
||||
; X + X + X*8
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1322,11 +1431,38 @@ mul_byte_10 .proc
|
||||
asl a
|
||||
clc
|
||||
adc c64.ESTACK_LO+1,x
|
||||
clc
|
||||
adc c64.ESTACK_LO+1,x
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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
|
||||
; X + X + X + X*8
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1336,12 +1472,16 @@ mul_byte_11 .proc
|
||||
asl a
|
||||
clc
|
||||
adc c64.SCRATCH_ZPREG
|
||||
clc
|
||||
adc c64.SCRATCH_ZPREG
|
||||
clc
|
||||
adc c64.SCRATCH_ZPREG
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.pend
|
||||
|
||||
; mul_word_11 is skipped (too much code)
|
||||
|
||||
mul_byte_12 .proc
|
||||
; X*4 + X*8
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1354,7 +1494,33 @@ mul_byte_12 .proc
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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
|
||||
; X*16 - X -X -X
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1365,12 +1531,16 @@ mul_byte_13 .proc
|
||||
asl a
|
||||
sec
|
||||
sbc c64.SCRATCH_ZPREG
|
||||
sec
|
||||
sbc c64.SCRATCH_ZPREG
|
||||
sec
|
||||
sbc c64.SCRATCH_ZPREG
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.pend
|
||||
|
||||
; mul_word_13 is skipped (too much code)
|
||||
|
||||
mul_byte_14 .proc
|
||||
; X*16 - X -X
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1380,11 +1550,14 @@ mul_byte_14 .proc
|
||||
asl a
|
||||
sec
|
||||
sbc c64.ESTACK_LO+1,x
|
||||
sec
|
||||
sbc c64.ESTACK_LO+1,x
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.pend
|
||||
|
||||
; mul_word_14 is skipped (too much code)
|
||||
|
||||
mul_byte_15 .proc
|
||||
; X*16 - X
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1399,6 +1572,30 @@ mul_byte_15 .proc
|
||||
rts
|
||||
.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
|
||||
; X*4 + X*16
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1412,7 +1609,35 @@ mul_byte_20 .proc
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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
|
||||
; X + X*8 + X*16
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1423,11 +1648,43 @@ mul_byte_25 .proc
|
||||
asl a
|
||||
clc
|
||||
adc c64.SCRATCH_ZPREG
|
||||
clc
|
||||
adc c64.ESTACK_LO+1,x
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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
|
||||
; X*8 + X*32
|
||||
lda c64.ESTACK_LO+1,x
|
||||
@ -1442,6 +1699,37 @@ mul_byte_40 .proc
|
||||
sta c64.ESTACK_LO+1,x
|
||||
rts
|
||||
.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? {
|
||||
|
||||
if(mulIns.opcode == Opcode.MUL_B || mulIns.opcode==Opcode.MUL_UB) {
|
||||
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_byte_$amount"
|
||||
else -> {}
|
||||
}
|
||||
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(mulIns.opcode == Opcode.MUL_B) {
|
||||
when(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 -> {}
|
||||
}
|
||||
}
|
||||
if(amount in setOf(3,5,6,7,9,10,11,12,13,14,15,20,25,40))
|
||||
return " jsr math.mul_byte_$amount"
|
||||
|
||||
if(mulIns.opcode == Opcode.MUL_B && amount in setOf(-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 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) {
|
||||
when(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
|
||||
|
@ -66,7 +66,7 @@
|
||||
|
||||
for ubyte i in 0 to len(xcoor)-1 {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
530
examples/test.p8
530
examples/test.p8
@ -1,5 +1,4 @@
|
||||
%import c64utils
|
||||
%import c64flt
|
||||
|
||||
~ main {
|
||||
|
||||
@ -13,23 +12,520 @@
|
||||
uword uw2
|
||||
word w = 1000
|
||||
word w2
|
||||
float f1 = 1.1
|
||||
float f2 = 2.2
|
||||
|
||||
b2 = j + (-1)
|
||||
b2 = (-1) + j
|
||||
b2 = j - (-1)
|
||||
b2 = (-1) -j ; should not be reordered
|
||||
b2 = j+1
|
||||
b2 = 1+j
|
||||
b2 = 1-j ; should not be reordered
|
||||
; i=10
|
||||
; ub2=i*1
|
||||
; c64scr.print_ub(ub2)
|
||||
; c64.CHROUT('\n')
|
||||
; ub2=i*2
|
||||
; c64scr.print_ub(ub2)
|
||||
; 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