COMPARE new 2080

Top  Previous  Next

Action

This function performs a byte compare on two variables.

 

 

Syntax

result = COMPARE( var1, var2, bytes)

 

 

Remarks

result

A word variable that is assigned with the result of the function. When the 2 variables are equal, the value will be 0.

When the 2 variables differ, the index is returned of the position that differs.

var1 , var2

Any kind of variable like a long or string. Constants are not supported.

Bytes

The number of bytes to test. The maximum value must fit into a word. (65535).

 

 

 

See also

NONE

 

 

Example

'-------------------------------------------------------------------------
'name                     : compare.bas
'copyright                : (c) 1995-2021, MCS Electronics
'purpose                  : demonstrates byte COMPARE function, written by MWS
'micro                    : Mega88
'suited for demo          : yes
'commercial addon needed  : no
'-------------------------------------------------------------------------
' purpose: byte-wise compare
' arg Val1: first value to compare, type = don't care
' arg Val2: second value to compare, type = don't care
' arg BtComp: count of bytes to compare, can be a constant or a variable
' range is 1 to 65535 bytes
' result: zero if all bytes within range of BtComp are matching
'         1 up to BtComp if there's a miss,
' zero is used for signaling a comlete match, so Config Base has no effect
' 1 is always the first byte of the variable, whatever type of variable it is
'-------------------------------------------------------------------------
 
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 32
$framesize = 32
 
Const Testver = 2                                           ' edit for different tests 0,1 or 2
 
Dim Mmpos As Word                                           ' dimension word var to hold the result, i.e. mismatch position
Dim btt As Word                                             ' bytes to test
 
#if Testver = 0
  Dim Val_a(8) As Byte                                     ' byte array vs. byte array
  Dim Val_b(8) As Byte                                     ' arrays are initialyzed 0
  Btt = 8
  Val_a(4) = 1                                             ' test it
#elseif Testver = 1
  Dim Val_a As Double                                     ' Double vs. byte array
  Dim Val_b(8) As Byte
  Btt = 8
  Val_b(2) = 1                                             ' test it
#elseif Testver = 2                                         ' compare strings
  Dim Val_a As String * 16
  Dim Val_b As String * 16
  Btt = 12
  Val_a = "Hello Bascom"
  Val_b = "Hello Bascon"                                   ' find the mismatch
#endif
 
Mmpos = Compare(val_a , Val_b , Btt)
 
If Mmpos > 0 Then
  Print "We have a miss at pos: " ; Mmpos
Else
  Print "Match!"
End If
End