Dim Numbers&(0 To 3)
Dim arg1&, arg2&, answer&

Sub Form_Load ()
arg1& = 10&
arg2& = 5&
txVal1.Text = Format$(arg1&)
txVal2.Text = Format$(arg2&)
End Sub

Sub operator_Click (index As Integer)
        Numbers&(0) = arg1&
        Numbers&(1) = arg2&
        'first must get the pointer (selector/offset)
        lpVBArray& = VBPTRtoLong&(Numbers&(0))
        'get selector from pointer
        VBSel% = lpVBArray& \ &H10000
        'get handle from selector
        lhvbarray& = GlobalHandle(VBSel%)
        hvbArray% = VBLowWord(lhvbarray&)
        'lock VB array in virtual address space
        GlobalFix (hvbArray%)

        Select Case Operator(index).Caption
            Case "+"
                If (opt16.Value) Then
                    answer = AddTwo(Numbers&(0))
                Else answer = AddTwo32(Numbers&(0))
                    answer = Numbers&(2)
                End If
                
            Case "-"
                If (opt16.Value) Then
                    answer = SubTwo(Numbers&(0))
                Else answer = SubTwo32(Numbers&(0))
                    answer = Numbers&(2)
                End If
                
            Case "X"
                If (opt16.Value) Then
                    answer = MultTwo(Numbers&(0))
                Else answer = MultTwo32(Numbers&(0))
                    answer = Numbers&(2)
                End If
               
            Case "/"
                If arg2 = 0 Then
                   MsgBox "Can't divide by zero", 48, "ThunkCalc"
                Else
                    If (opt16.Value) Then
                        answer = DivTwo(Numbers&(0))
                    Else answer = DivTwo32(Numbers&(0))
                        answer = Numbers&(2)
                    End If
                End If
            
        End Select
        GlobalUnFix (hvbArray%)
        labReadOut.Caption = Format$(answer)
End Sub

Sub txVal1_Change ()
arg1& = Val(txVal1.Text)
End Sub

Sub txVal2_Change ()
arg2& = Val(txVal2.Text)
End Sub

