'ProgramMode:RUN
' Memory Manager
' Version 0.1
' 2018.06.01
' Copyright _#E59E_ 2018 Colon
'
'
'DANGEROUSChar!Char!
'
'DO NOT CHANGEChar!Char!
'
System((-)1)=0=>Return 

'#CBINT
'#G3M
RefrshCtrl 2
RefrshTime 0
SetFont 0
3->M

SysCall(0X2B7,0
SysCall(0X2B8,3,3,0,0
If Version<50:Then 
"Your C.Basic for CG"
"Version does not"
"support this program."
"Upgrade C.Basic to"
"  Ver 0.50_#E640_ or later."
Blue Locate 10,7,"Press [EXIT]"
Do
SysCall(0X1D81
_DispVram
LpWhile Getkey1<>47
ClrText
0
Stop

IfEnd

""->Str 1
SysCall(0X1D77,&Str 1,0,0,0
SysCall(0X2B7,0
SysCall(0X2B8,3,0X103,0,0


Lbl 0

Gosub R

'File list
Lbl f
Screen.T
_ClrVram
C=>FkeyMenu(1,55
C=>FkeyMenu(2,909
C=>FkeyMenu(3,391
C=>FkeyMenu(6,56

Blue Locate 1,1,"Program List (MCS)",O
C->l
l>f+5=>f+5->l

C=0=>Goto 1

For f->L To l
Locate 3,(L-f)+2,$A[L],O
Locate 15,(L-f)+2,":",O
Locate 21-log (B[L,2]+20),(L-f)+2,B[L,2]+20,O
List 6[L]=>Magenta Locate 1,(L-f)+2,"_#E69B_"
WriteGraph @18,24((L-f)+1),18,24,Mat b

Next

Locate 1,(F-f)+2,"              :      ",R
Locate 3,(F-f)+2,$A[F],R
Locate 21-log (B[F,2]+20),(F-f)+2,B[F,2]+20,R
List 6[F]=>Green Locate 1,(F-f)+2,"_#E69B_",O
WriteGraph @18,24((F-f)+1),18,24,Mat a


Lbl 1

'Scrollbar
f-1->List 2[0X09]:1->List 2[0X10]:C=>C->List 2[0X10]
SysCall(0X0C5A,&List 2

" Memory Manager  (Version 0.1)"->Str 19
SysCall(0X1D77,&Str 19,0,4,0

C=0=>Locate 6,4,"No Programs"Goto 2
If Sum List 6:Then 
" Selected : "+ToStr(Sum List 6)+" // "+ToStr(Dim List 6->Str 19
SysCall(0X1D77,&Str 19,0,0,0
IfEnd

Lbl 2
SysCall(0X31,20)<>1=>SysCall(0X32,20,0X84

SysCall(0X1D81
_DispVram
Getkey@1->K

If K=0X7532 Or K=0X754D:Then 

If F=1:Then 
ClrText:SysCall(0X2B8,3,0X3,0,0):0:Stop
IfEnd
1->F:1->f

ElseIf K=0X7542 Or K=0X7564:Then 
If F>1
Then Dsz F
F<f=>Dsz f
ElseIf F=1:Then 
C->F:F>=7=>F->f
IfEnd

ElseIf K=0X7547 Or K=0X7565:Then 
If F<C
Then Isz F
F>l=>Isz f
ElseIf F=C
Then 1->F:1->f
IfEnd

ElseIf K=0X753E And C:Then 
Sum List 6=>Goto D
PopUpWin(4
Locate 4,2,"No item"
Locate 4,3,"is selected"
Locate 3,5,"   Press:[EXIT]"
Do
Getkey1->K
LpWhile K<>47 And K<>34

ElseIf K=0X753B And C:Then 
Gosub S

ElseIf K=0X753A And C:Then 
Sum List 6=>Goto C
PopUpWin(4
Locate 4,2,"No item"
Locate 4,3,"is selected"
Locate 3,5,"   Press:[EXIT]"
Do
Getkey1->K
LpWhile K<>47 And K<>34

ElseIf K=0X7539 And C:Then 
1-List 6[F]->List 6[F]


ElseIf 0X41<=K And K<=0X5A:Then 

For 1->a To C
If K=Mat A[a,1:Then 
a->F:a->f:Break
IfEnd
Next

IfEnd

Goto f



Lbl C
PopUpWin(0
PopUpWin(6

Locate 3,2,"Select File Type_#E5AC_"
Locate 3,3,"==g1m  g2m  g3m=="
Locate 3,4,"Output Mode"
Locate 3,7,"    Press:[EXE]"

Do
Locate 5M,3,"g"+ToStr(M)+"m",R
M=1=>Locate 3,5,"FX Normal        "
M=2=>Locate 3,5,"FA-24 Compatible"
M=3=>Locate 3,5,"CG Normal        "

SysCall(0X1D81
_DispVram
Getkey1->K
Locate 5M,3,"g"+ToStr(M)+"m"
Switch K
Case 72:1->M
Break
Case 62:2->M
Break
Case 52:3->M
Break
Case 27:M<>3=>Isz M
Break
Case 38:M<>1=>Dsz M
Break
Case 47:Goto 0
Break
SwitchEnd
LpWhile K<>31

PopUpWin(9)
0->s
For 1->Theta To Dim List 6
If List 6[Theta]:Then 
Isz s
'#_Mat _0
'_sin _E2,"",c
SysCall(0X1D81
_DispVram
PopUpWin(3)
Locate 3,3,"["+$A[Theta]+".g"+ToStr(M)+"m]"
Locate 3,4,"Saving..."
"("+ToStr(s)+"//"+ToStr(Sum List 6)+")"->Str 18
Locate 20-StrLen(Str 18),4,Str 18

PutDispDD
'
'_sin _E_sin _E_sin _E
'_sin _E3,3,"Save g3m Name?"
'_sin _E4,4,"[             ]"
'
'?(5,4,13,,8)_->__sin _E20
'_SysCall(_0X2B7,0
'_SysCall(_0X2B8,3,3,0,0


B[Theta,2]->Dim List 1.B

For 0->D To B[Theta,2]-1
Peek(B+B[Theta,1]+D).B->List 1[D]
Next

{0XAA,0XAC,0XBD,0XAF,0X90,0X88,0X9A,0X8D,
0,
0XFF,0XEF,0XFF,0XEF,0XFF,
0,
0XFE,
0,0,0,0,
0,
0,0,0,0,0,0,0,
0,
0,
0XFF,0XFE,
0X50,0X52,0X4F,0X47,0X52,0X41,0X4D,0,0,0,0,0,0,0,0,0,
0,0,0,1,
0X73,0X79,0X73,0X74,0X65,0X6D,0,0,
0,0,0,0,0,0,0,0,
1,
0,0,0,0,
0,0,0}->List 3.B

Augment(List 3,List 1)->List 3
1->Dim List 4.L
1->Dim List 5.L

0XFFFFFFFF-Dim List 3->List 4[0]
0XFFFFFFB3-List 4[0]->List 5[0]

4->Dim Dim List 4.B
4->Dim Dim List 5.B

List 4[0]->List 3[0X10]
List 4[1]->List 3[0X11]
List 4[2]->List 3[0X12]
List 4[3]->List 3[0X13]

List 5[0]->List 3[0X45]
List 5[1]->List 3[0X46]
List 5[2]->List 3[0X47]
List 5[3]->List 3[0X48]


List 3[0X13]-0X41->List 3[0X0E]
List 3[0X13]+0X48->List 3[0X14]

M=2=>List 3[0X10]+List 3[0X11]+List 3[0X12]+List 3[0X13]-0XDA->List 3[0X1C]
M=3=>List 3[0X10]+List 3[0X11]+List 3[0X12]+List 3[0X13]-0XED->List 3[0X1C]
M<>1=>List 3[0X13]+0X17->List 3[0X1D]

M=1=>0XCE->List 3[0X08]
M=2=>0X9D->List 3[0X08]
M=3=>0X8A->List 3[0X08]

M<>1=>0X01->List 3[0X15]

For 1->D To 8
Mat A[Theta,D]->List 3[0X3C+D-1]
Next

79->K
If IsExist($A[Theta]+".g"+ToStr(M)+"m"):Then 
PopUpWin(0)
PopUpWin(5)
Locate 3,2,"["+$A[Theta]+".g"+ToStr(M)+"m]"
Locate 3,3,"Already Exists"
Locate 3,4,"Overwright OK?"
Locate 3,5,"   Yes:[F1]"
Locate 3,6,"   No :[F6]"
Do:Getkey1->K
LpWhile K<>79 And K<>29
PopUpWin(9)
IfEnd
K=79=>Save $A[Theta]+".g"+ToStr(M)+"m",List 3

IfEnd
Next


PopUpWin(11,"    CompleteChar!"
Goto 0

Lbl R
ClrMat 
1->F:1->f
'#_Mat _0
0X12->Dim List 2.W
'#_Mat _1
""->Str 1
(-)1->Mat <r>
"system"->Str 1
SysCall(0X1514,Str 1,&A%,Str 2

Peek(A%+8).L->B%
Peek(A%+12).W->C%

C%=0=>Return 
{C%,9}->Dim Mat A.B
{C%,2}->Dim Mat B.L
C%->Dim List 6.P

For 0->D To C-1
For 0->E To 7
Peek(B+20D+E).B->Mat A[D+1,E+1]

Next
Peek(B+20D+8).L->Mat B[D+1,1]
Peek(B+20D+12).L->Mat B[D+1,2]

Next
[[0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]
[0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]
[0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0x7BCF,0x0000,0x0000,0x0000,0x0000]
[0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xB5B6,0x7BCF,0x0000,0x0000,0x0000]
[0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0x0000,0xF79E,0xB5B6,0x7BCF,0x0000,0x0000]
[0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xB5B6,0x7BCF,0x0000]
[0x0000,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]
[0x0000,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xA514,0xA514,0xA514,0xA514,0x0000]
[0x0000,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]
[0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]
[0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]]->Mat a.W

[[0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF]
[0xFFFF,0xFFFF,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xFFFF,0xFFFF,0xFFFF,0xFFFF]
[0xFFFF,0xFFFF,0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0x7BCF,0x0000,0xFFFF,0xFFFF,0xFFFF]
[0xFFFF,0xFFFF,0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xB5B6,0x7BCF,0x0000,0xFFFF,0xFFFF]
[0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0x0000,0xF79E,0xB5B6,0x7BCF,0x0000,0xFFFF]
[0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xB5B6,0x7BCF,0x0000]
[0xFFFF,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]
[0xFFFF,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xA514,0xA514,0xA514,0xA514,0x0000]
[0xFFFF,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0xFFFF,0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0xFFFF,0xFFFF,0x0000,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0xF79E,0x0000]
[0xFFFF,0xFFFF,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000]
[0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF]
[0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF]]->Mat b.w
Return 

Lbl S
FkeyMenu(1,"",C
FkeyMenu(2,"",C
FkeyMenu(3,"",C
FkeyMenu(6,"",C
SysCall(0X1EF8,9
Blue Locate 1,1,"Search For Program",O
Locate 1,2,"[        ]",O
?(2,2,8,,8)->Str 17

1->d
For 1->D To Dim List 6
StrSrc($A[D],Str 17)=1=>0->dD->FBreak
Next
SysCall(0X2B7,0
SysCall(0X2B8,3,0X103,0,0
d=>PopUpWin(11," Not found")

F->f

Return 

Lbl D
PopUpWin(0)
PopUpWin(4)
Locate 3,2,"Delete All The"
Locate 3,3,"   Selected Data?"
Locate 3,4,"   Yes:[F1]"
Locate 3,5,"   No :[F6]"
Do
SysCall(0X1D81
Getkey1->K
LpWhile K<>79 And K<>29
PopUpWin(9)
K=29=>Goto 0

For 1->Theta To Dim List 6
If List 6[Theta]:Then 
SysCall(0X1558,&Str 1,&Mat A[Theta%,1]


IfEnd
Next

Goto 0


BmpLoad("icon")->Mat a
WriteGraph @18,24((L-f)+1),18,24,Mat a
WriteGraph @18,24((F-f)+1),18,24,Mat b
