107 lines
1.7 KiB
Plaintext
107 lines
1.7 KiB
Plaintext
; Process and output values.
|
|
Procedure WriteLinear(Array c.i(1))
|
|
Define buf$,
|
|
i.i, j.i, b,i
|
|
|
|
b = #True
|
|
j = 0
|
|
|
|
For i = 0 To ArraySize(c(), 1)
|
|
If c(i) = 0 : Continue : EndIf
|
|
|
|
If c(i) < 0
|
|
If b : Print("-") : Else : Print(" - ") : EndIf
|
|
ElseIf c(i) > 0
|
|
If Not b : Print(" + ") : EndIf
|
|
EndIf
|
|
|
|
If c(i) > 1
|
|
Print(Str(c(i))+"*")
|
|
ElseIf c(i) < -1
|
|
Print(Str(-c(i))+"*")
|
|
EndIf
|
|
|
|
Print("e("+Str(i+1)+")")
|
|
|
|
b = #False
|
|
j+1
|
|
Next
|
|
|
|
If j = 0 : Print("0") : EndIf
|
|
PrintN("")
|
|
EndProcedure
|
|
|
|
|
|
Macro VectorHdl(Adr_Start, Adr_Stop)
|
|
; 1. Output of the input values
|
|
Define buf$ = "[", *adr_ptr
|
|
For *adr_ptr = Adr_Start To Adr_Stop - SizeOf(Integer) Step SizeOf(Integer)
|
|
buf$ + Str(PeekI(*adr_ptr))
|
|
If *adr_ptr >= Adr_Stop - SizeOf(Integer)
|
|
buf$ + "] -> "
|
|
Else
|
|
buf$ + ", "
|
|
EndIf
|
|
Next
|
|
buf$ = RSet(buf$, 25)
|
|
Print(buf$)
|
|
|
|
; 2. Reserve memory, pass and process values.
|
|
Dim a.i((Adr_Stop - Adr_Start) / SizeOf(Integer) -1)
|
|
CopyMemory(Adr_Start, @a(0), Adr_Stop - Adr_Start)
|
|
WriteLinear(a())
|
|
EndMacro
|
|
|
|
|
|
If OpenConsole("")
|
|
; Pass memory addresses of the data.
|
|
VectorHdl(?V1, ?_V1)
|
|
VectorHdl(?V2, ?_V2)
|
|
VectorHdl(?V3, ?_V3)
|
|
VectorHdl(?V4, ?_V4)
|
|
VectorHdl(?V5, ?_V5)
|
|
VectorHdl(?V6, ?_V6)
|
|
VectorHdl(?V7, ?_V7)
|
|
VectorHdl(?V8, ?_V8)
|
|
VectorHdl(?V9, ?_V9)
|
|
VectorHdl(?V10, ?_V10)
|
|
|
|
Input()
|
|
EndIf
|
|
|
|
End 0
|
|
|
|
|
|
DataSection
|
|
V1:
|
|
Data.i 1,2,3
|
|
_V1:
|
|
V2:
|
|
Data.i 0,1,2,3
|
|
_V2:
|
|
V3:
|
|
Data.i 1,0,3,4
|
|
_V3:
|
|
V4:
|
|
Data.i 1,2,0
|
|
_V4:
|
|
V5:
|
|
Data.i 0,0,0
|
|
_V5:
|
|
V6:
|
|
Data.i 0
|
|
_V6:
|
|
V7:
|
|
Data.i 1,1,1
|
|
_V7:
|
|
V8:
|
|
Data.i -1,-1,-1
|
|
_V8:
|
|
V9:
|
|
Data.i -1,-2,0,-3
|
|
_V9:
|
|
V10:
|
|
Data.i -1
|
|
_V10:
|
|
EndDataSection
|