PicoMite Firmware Release Version 6.00.03


Author Message
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 3409
Posted: 12:48am 12 Jul 2025      

As reported by Mixtel90 in the other thread CHAIN still isn't quite right.
Mick's test with some extra Prints.
> option list
PicoMite MMBasic RP2040 Edition V6.00.03
OPTION FLASH SIZE 16777216
OPTION COLOURCODE ON
OPTION CPUSPEED (KHz) 200000
>
> list "q1.bas"
Print
Print "This is the Main program (q1.bas)"
Print "MM.CMDLINE$ = ";MM.CMDLINE$
If MM.CMDLINE$<>"chainret" Then
 Print "Array and Vars prepared in Main (q1.bas):"
 Dim integer d(5)=(1,2,3,4,5,6),z1=1,z2=2,z3=3,z4=4
 Print "d() = "; :Math V_Print d()
 Print "z1,z2,z3,z4= ";z1;z2;z3;z4
 Print "Passing array & Vars to q2.bas:"
 Print
 Chain "a:/q2.bas"
EndIf
If MM.CMDLINE$="chainret" Then
 Print
 Print "Array & Vars returned from q2.bas:"
  Print "d() = "; :Math V_Print d()
 Print "z1,z2,z3,z4= ";z1;z2;z3;z4
 Print
EndIf
Print "The End"
End
>
>
> list "q2.bas"
Print "This program (q2.bas) is chained from Main (q1.bas)"
Print "Array & Vars received from q1.bas"
print "d() = "; : math v_print d()
Print "z1,z2,z3,z4= ";z1;z2;z3;z4
For i=1 To 6
  d(6-i) = i
Next
z1=5 : z2=6 : z3=7 : z4=8
Print
Print "Array & Vars about to be returned to Main (q1.bas)"
print "d() = "; :math v_print d()
Print "z1,z2,z3,z4= ";z1;z2;z3;z4
print
Chain "q1.bas","chainret"
>
>
> RUN

This is the Main program (q1.bas)
MM.CMDLINE$ =
Array and Vars prepared in Main (q1.bas):
d() = 1, 2, 3, 4, 5, 6
z1,z2,z3,z4=  1 2 3 4
Passing array & Vars to q2.bas:

This program (q2.bas) is chained from Main (q1.bas)
Array & Vars received from q1.bas
d() = 0, 0, 0, 0, 0, 0
z1,z2,z3,z4=  1 2 3 4

Array & Vars about to be returned to Main (q1.bas)
d() = 6, 5, 4, 3, 2, 1
z1,z2,z3,z4=  5 6 7 8


This is the Main program (q1.bas)
MM.CMDLINE$ = chainret

Array & Vars returned from q2.bas:
d() = 0, 0, 0, 0, 0, 0
z1,z2,z3,z4=  5 6 7 8

The End
>

Same result if d(5) integer or float.
Edited 2025-07-12 15:25 by phil99