'Let's see if we can sort the integer array
'Initialize Data
PRINT "----------------------------------------------------------------------------------------------------------------------------------------------------------------"
'Sort
Sort m
'Result
PRINT "----------------------------------------------------------------------------------------------------------------------------------------------------------------"
'Try the same routine with a different data type array to sort
'Initialize Data
PRINT "----------------------------------------------------------------------------------------------------------------------------------------------------------------"
'Sort
Sort m
'Result
PRINT "----------------------------------------------------------------------------------------------------------------------------------------------------------------"
'To test with fixed length string arrays
z(0) = "Doggy": z(1) = "Pudding": z(2) = "Frog ": z(3) = "test2": z(4) = "Test2": z(5) = "test1"
PRINT "----------------------------------------------------------------------------------------------------------------------------------------------------------------"
Sort m
'Result
'Convert our offset data over to something we can work with
_MEMPUT m1
, m1.OFFSET
, m.ELEMENTSIZE:
_MEMGET m1
, m1.OFFSET
, ES
'Element Size _MEMPUT m1
, m1.OFFSET
, m.SIZE:
_MEMGET m1
, m1.OFFSET
, EC
'Element Count will temporily hold the WHOLE array size
EC = EC / ES - 1 'Now we take the whole element size / the size of the elements and get our actual element count. We subtract 1 so our arrays start at 0 and not 1.
'And work with it!
i = 0
temp1(t1) = temp1(t1) + 1
i = i + 1
i1 = -128
counter = counter + 1
temp1(i1) = temp1(i1) - 1
i1 = i1 + 1
i = 0
temp2(t2) = temp2(t2) + 1
i = i + 1
i1 = -32768
counter = counter + 1
temp2(i1) = temp2(i1) - 1
i1 = i1 + 1
gap = EC
gap = 10 * gap \ 13
i = 0
swapped = 0
o = m.OFFSET + i * 4
o1 = m.OFFSET + (i + gap) * 4
swapped = -1
i = i + 1
gap = EC
gap = 10 * gap \ 13
i = 0
swapped = 0
o = m.OFFSET + i * 4
o1 = m.OFFSET + (i + gap) * 4
swapped = -1
i = i + 1
gap = EC
gap = 10 * gap \ 13
i = 0
swapped = 0
o = m.OFFSET + i * 8
o1 = m.OFFSET + (i + gap) * 8
swapped = -1
i = i + 1
gap = EC
gap = 10 * gap \ 13
i = 0
swapped = 0
o = m.OFFSET + i * 32
o1 = m.OFFSET + (i + gap) * 32
swapped = -1
i = i + 1
gap = EC
gap
= INT(gap
/ 1.247330950103979) i = 0
swapped = 0
o = m.OFFSET + i * ES
o1 = m.OFFSET + (i + gap) * ES
T7c = T7b
swapped = -1
i = i + 1
gap = EC
gap = 10 * gap \ 13
i = 0
swapped = 0
o = m.OFFSET + i * 8
o1 = m.OFFSET + (i + gap) * 8
swapped = -1
i = i + 1
CASE 11:
'_UNSIGNED _BYTE i = 0
temp11(t11) = temp11(t11) + 1
i = i + 1
i1 = 0
counter = counter + 1
temp11(i1) = temp11(i1) - 1
i1 = i1 + 1
CASE 12 '_UNSIGNED INTEGER i = 0
temp12(t12) = temp12(t12) + 1
i = i + 1
i1 = 0
counter = counter + 1
temp12(i1) = temp12(i1) - 1
i1 = i1 + 1
gap = EC
gap = 10 * gap \ 13
i = 0
swapped = 0
o = m.OFFSET + i * 4
o1 = m.OFFSET + (i + gap) * 4
swapped = -1
i = i + 1
CASE 18:
'_UNSIGNED _INTEGER64 gap = EC
gap = 10 * gap \ 13
i = 0
swapped = 0
o = m.OFFSET + i * 8
o1 = m.OFFSET + (i + gap) * 8
swapped = -1
i = i + 1