fix min(), max(), sum(), abs()

This commit is contained in:
Irmen de Jong 2021-03-06 22:37:38 +01:00
parent 2950d26c8e
commit a1729b65ab
13 changed files with 112 additions and 97 deletions

View File

@ -440,6 +440,7 @@ func_min_ub_stack .proc
func_min_b_into_A .proc func_min_b_into_A .proc
; -- min(barray) -> A. (array in P8ZP_SCRATCH_W1, num elements in A) ; -- min(barray) -> A. (array in P8ZP_SCRATCH_W1, num elements in A)
tay tay
dey
lda #127 lda #127
sta P8ZP_SCRATCH_B1 sta P8ZP_SCRATCH_B1
- lda (P8ZP_SCRATCH_W1),y - lda (P8ZP_SCRATCH_W1),y
@ -556,6 +557,7 @@ func_min_w_stack .proc
func_max_ub_into_A .proc func_max_ub_into_A .proc
; -- max(ubarray) -> A (array in P8ZP_SCRATCH_W1, num elements in A) ; -- max(ubarray) -> A (array in P8ZP_SCRATCH_W1, num elements in A)
tay tay
dey
lda #0 lda #0
sta P8ZP_SCRATCH_B1 sta P8ZP_SCRATCH_B1
- lda (P8ZP_SCRATCH_W1),y - lda (P8ZP_SCRATCH_W1),y

View File

@ -483,11 +483,11 @@ internal class BuiltinFunctionsAsmGen(private val program: Program, private val
} }
DataType.ARRAY_UW -> { DataType.ARRAY_UW -> {
asmgen.out(" jsr prog8_lib.func_${function.name}_uw_into_AY") asmgen.out(" jsr prog8_lib.func_${function.name}_uw_into_AY")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.A, scope, program, asmgen), RegisterOrPair.AY) assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.AY, scope, program, asmgen), RegisterOrPair.AY)
} }
DataType.ARRAY_W -> { DataType.ARRAY_W -> {
asmgen.out(" jsr prog8_lib.func_${function.name}_w_into_AY") asmgen.out(" jsr prog8_lib.func_${function.name}_w_into_AY")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.A, scope, program, asmgen), RegisterOrPair.AY) assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.AY, scope, program, asmgen), RegisterOrPair.AY)
} }
DataType.ARRAY_F -> { DataType.ARRAY_F -> {
asmgen.out(" jsr floats.func_${function.name}_f_fac1") asmgen.out(" jsr floats.func_${function.name}_f_fac1")
@ -514,19 +514,19 @@ internal class BuiltinFunctionsAsmGen(private val program: Program, private val
when (dt.typeOrElse(DataType.STRUCT)) { when (dt.typeOrElse(DataType.STRUCT)) {
DataType.ARRAY_UB, DataType.STR -> { DataType.ARRAY_UB, DataType.STR -> {
asmgen.out(" jsr prog8_lib.func_sum_ub_into_AY") asmgen.out(" jsr prog8_lib.func_sum_ub_into_AY")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.A, scope, program, asmgen), RegisterOrPair.AY) assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.AY, scope, program, asmgen), RegisterOrPair.AY)
} }
DataType.ARRAY_B -> { DataType.ARRAY_B -> {
asmgen.out(" jsr prog8_lib.func_sum_b_into_AY") asmgen.out(" jsr prog8_lib.func_sum_b_into_AY")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.A, scope, program, asmgen), RegisterOrPair.AY) assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.AY, scope, program, asmgen), RegisterOrPair.AY)
} }
DataType.ARRAY_UW -> { DataType.ARRAY_UW -> {
asmgen.out(" jsr prog8_lib.func_sum_uw_into_AY") asmgen.out(" jsr prog8_lib.func_sum_uw_into_AY")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.A, scope, program, asmgen), RegisterOrPair.AY) assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.AY, scope, program, asmgen), RegisterOrPair.AY)
} }
DataType.ARRAY_W -> { DataType.ARRAY_W -> {
asmgen.out(" jsr prog8_lib.func_sum_w_into_AY") asmgen.out(" jsr prog8_lib.func_sum_w_into_AY")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.A, scope, program, asmgen), RegisterOrPair.AY) assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.AY, scope, program, asmgen), RegisterOrPair.AY)
} }
DataType.ARRAY_F -> { DataType.ARRAY_F -> {
asmgen.out(" jsr floats.func_sum_f_fac1") asmgen.out(" jsr floats.func_sum_f_fac1")
@ -929,15 +929,15 @@ internal class BuiltinFunctionsAsmGen(private val program: Program, private val
when (dt) { when (dt) {
in ByteDatatypes -> { in ByteDatatypes -> {
asmgen.out(" jsr prog8_lib.abs_b_into_A") asmgen.out(" jsr prog8_lib.abs_b_into_A")
assignAsmGen.assignRegisterByte(AsmAssignTarget.fromRegisters(resultRegister!!, scope, program, asmgen), CpuRegister.A) assignAsmGen.assignRegisterByte(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.A, scope, program, asmgen), CpuRegister.A)
} }
in WordDatatypes -> { in WordDatatypes -> {
asmgen.out(" jsr prog8_lib.abs_w_into_AY") asmgen.out(" jsr prog8_lib.abs_w_into_AY")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister!!, scope, program, asmgen), RegisterOrPair.AY) assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.AY, scope, program, asmgen), RegisterOrPair.AY)
} }
DataType.FLOAT -> { DataType.FLOAT -> {
asmgen.out(" jsr floats.abs_f_fac1") asmgen.out(" jsr floats.abs_f_fac1")
assignAsmGen.assignRegisterpairWord(AsmAssignTarget.fromRegisters(resultRegister!!, scope, program, asmgen), RegisterOrPair.FAC1) assignAsmGen.assignFAC1float(AsmAssignTarget.fromRegisters(resultRegister ?: RegisterOrPair.FAC1, scope, program, asmgen))
} }
else -> throw AssemblyError("weird type") else -> throw AssemblyError("weird type")
} }

View File

@ -406,14 +406,18 @@ galaxy {
sub init(ubyte galaxynum) { sub init(ubyte galaxynum) {
number = 1 number = 1
planet.number = 255 planet.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxynum-1 { repeat galaxynum-1 {
nextgalaxy() nextgalaxy()
} }
} }
sub nextgalaxy() { sub nextgalaxy() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -587,7 +591,10 @@ galaxy {
planet.species_kind = (planet.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet.species_kind = (planet.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet.goatsoup_seed[0] = lsb(seed[1])
planet.goatsoup_seed[1] = msb(seed[1])
planet.goatsoup_seed[2] = lsb(seed[2])
planet.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy10 {
sub init(ubyte galaxy10num) { sub init(ubyte galaxy10num) {
number = 1 number = 1
planet10.number = 255 planet10.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy10num-1 { repeat galaxy10num-1 {
nextgalaxy10() nextgalaxy10()
} }
} }
sub nextgalaxy10() { sub nextgalaxy10() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -576,8 +580,10 @@ galaxy10 {
planet10.species_look = (seed2_msb ^ msb(seed[1])) & 7 ;bits 0-2 of (w0_hi EOR w1_hi) planet10.species_look = (seed2_msb ^ msb(seed[1])) & 7 ;bits 0-2 of (w0_hi EOR w1_hi)
planet10.species_kind = (planet10.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet10.species_kind = (planet10.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet10.goatsoup_seed[0] = lsb(seed[1])
planet10.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet10.goatsoup_seed[1] = msb(seed[1])
planet10.goatsoup_seed[2] = lsb(seed[2])
planet10.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy2 {
sub init(ubyte galaxy2num) { sub init(ubyte galaxy2num) {
number = 1 number = 1
planet2.number = 255 planet2.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy2num-1 { repeat galaxy2num-1 {
nextgalaxy2() nextgalaxy2()
} }
} }
sub nextgalaxy2() { sub nextgalaxy2() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -577,7 +581,10 @@ galaxy2 {
planet2.species_kind = (planet2.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet2.species_kind = (planet2.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet2.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet2.goatsoup_seed[0] = lsb(seed[1])
planet2.goatsoup_seed[1] = msb(seed[1])
planet2.goatsoup_seed[2] = lsb(seed[2])
planet2.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy3 {
sub init(ubyte galaxy3num) { sub init(ubyte galaxy3num) {
number = 1 number = 1
planet3.number = 255 planet3.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy3num-1 { repeat galaxy3num-1 {
nextgalaxy3() nextgalaxy3()
} }
} }
sub nextgalaxy3() { sub nextgalaxy3() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -577,7 +581,10 @@ galaxy3 {
planet3.species_kind = (planet3.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet3.species_kind = (planet3.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet3.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet3.goatsoup_seed[0] = lsb(seed[1])
planet3.goatsoup_seed[1] = msb(seed[1])
planet3.goatsoup_seed[2] = lsb(seed[2])
planet3.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy4 {
sub init(ubyte galaxy4num) { sub init(ubyte galaxy4num) {
number = 1 number = 1
planet4.number = 255 planet4.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy4num-1 { repeat galaxy4num-1 {
nextgalaxy4() nextgalaxy4()
} }
} }
sub nextgalaxy4() { sub nextgalaxy4() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -577,7 +581,10 @@ galaxy4 {
planet4.species_kind = (planet4.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet4.species_kind = (planet4.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet4.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet4.goatsoup_seed[0] = lsb(seed[1])
planet4.goatsoup_seed[1] = msb(seed[1])
planet4.goatsoup_seed[2] = lsb(seed[2])
planet4.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy5 {
sub init(ubyte galaxy5num) { sub init(ubyte galaxy5num) {
number = 1 number = 1
planet5.number = 255 planet5.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy5num-1 { repeat galaxy5num-1 {
nextgalaxy5() nextgalaxy5()
} }
} }
sub nextgalaxy5() { sub nextgalaxy5() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -577,7 +581,10 @@ galaxy5 {
planet5.species_kind = (planet5.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet5.species_kind = (planet5.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet5.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet5.goatsoup_seed[0] = lsb(seed[1])
planet5.goatsoup_seed[1] = msb(seed[1])
planet5.goatsoup_seed[2] = lsb(seed[2])
planet5.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy6 {
sub init(ubyte galaxy6num) { sub init(ubyte galaxy6num) {
number = 1 number = 1
planet6.number = 255 planet6.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy6num-1 { repeat galaxy6num-1 {
nextgalaxy6() nextgalaxy6()
} }
} }
sub nextgalaxy6() { sub nextgalaxy6() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -577,7 +581,10 @@ galaxy6 {
planet6.species_kind = (planet6.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet6.species_kind = (planet6.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet6.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet6.goatsoup_seed[0] = lsb(seed[1])
planet6.goatsoup_seed[1] = msb(seed[1])
planet6.goatsoup_seed[2] = lsb(seed[2])
planet6.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy7 {
sub init(ubyte galaxy7num) { sub init(ubyte galaxy7num) {
number = 1 number = 1
planet7.number = 255 planet7.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy7num-1 { repeat galaxy7num-1 {
nextgalaxy7() nextgalaxy7()
} }
} }
sub nextgalaxy7() { sub nextgalaxy7() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -577,7 +581,10 @@ galaxy7 {
planet7.species_kind = (planet7.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet7.species_kind = (planet7.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet7.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet7.goatsoup_seed[0] = lsb(seed[1])
planet7.goatsoup_seed[1] = msb(seed[1])
planet7.goatsoup_seed[2] = lsb(seed[2])
planet7.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy8 {
sub init(ubyte galaxy8num) { sub init(ubyte galaxy8num) {
number = 1 number = 1
planet8.number = 255 planet8.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy8num-1 { repeat galaxy8num-1 {
nextgalaxy8() nextgalaxy8()
} }
} }
sub nextgalaxy8() { sub nextgalaxy8() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -577,7 +581,10 @@ galaxy8 {
planet8.species_kind = (planet8.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet8.species_kind = (planet8.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet8.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet8.goatsoup_seed[0] = lsb(seed[1])
planet8.goatsoup_seed[1] = msb(seed[1])
planet8.goatsoup_seed[2] = lsb(seed[2])
planet8.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -396,14 +396,18 @@ galaxy9 {
sub init(ubyte galaxy9num) { sub init(ubyte galaxy9num) {
number = 1 number = 1
planet9.number = 255 planet9.number = 255
seed = [base0, base1, base2] seed[0] = base0
seed[1] = base1
seed[2] = base2
repeat galaxy9num-1 { repeat galaxy9num-1 {
nextgalaxy9() nextgalaxy9()
} }
} }
sub nextgalaxy9() { sub nextgalaxy9() {
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])] seed[0] = twist(seed[0])
seed[1] = twist(seed[1])
seed[2] = twist(seed[2])
number++ number++
if number==9 if number==9
number = 1 number = 1
@ -576,8 +580,10 @@ galaxy9 {
planet9.species_look = (seed2_msb ^ msb(seed[1])) & 7 ;bits 0-2 of (w0_hi EOR w1_hi) planet9.species_look = (seed2_msb ^ msb(seed[1])) & 7 ;bits 0-2 of (w0_hi EOR w1_hi)
planet9.species_kind = (planet9.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result planet9.species_kind = (planet9.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
} }
planet9.goatsoup_seed[0] = lsb(seed[1])
planet9.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb] planet9.goatsoup_seed[1] = msb(seed[1])
planet9.goatsoup_seed[2] = lsb(seed[2])
planet9.goatsoup_seed[3] = seed2_msb
} }
sub tweakseed() { sub tweakseed() {

View File

@ -4,61 +4,6 @@
main { main {
sub start() { sub start() {
ubyte[] arr1 = [1,2,3] txt.print("hello")
ubyte[] arr2 = [9,9,9]
arr1[2]=42
txt.print_ub(arr2[0])
txt.chrout(',')
txt.print_ub(arr2[1])
txt.chrout(',')
txt.print_ub(arr2[2])
txt.nl()
arr2=[99,88,77]
txt.print_ub(arr2[0])
txt.chrout(',')
txt.print_ub(arr2[1])
txt.chrout(',')
txt.print_ub(arr2[2])
txt.nl()
arr2=arr1
txt.print_ub(arr2[0])
txt.chrout(',')
txt.print_ub(arr2[1])
txt.chrout(',')
txt.print_ub(arr2[2])
txt.nl()
txt.nl()
struct MyType {
uword v1
uword w1
uword w2
}
MyType m1 = [1, 888, 999]
MyType m2 = [22, 222, 222]
txt.print_uw(m2.v1)
txt.chrout(',')
txt.print_uw(m2.w1)
txt.chrout(',')
txt.print_uw(m2.w2)
txt.nl()
m2 = [111,222,333]
txt.print_uw(m2.v1)
txt.chrout(',')
txt.print_uw(m2.w1)
txt.chrout(',')
txt.print_uw(m2.w2)
txt.nl()
m2 = m1
txt.print_uw(m2.v1)
txt.chrout(',')
txt.print_uw(m2.w1)
txt.chrout(',')
txt.print_uw(m2.w2)
txt.nl()
} }
} }