'ProgramMode:GB1
' Font File Manager
' Version : 01.21
' 27 Apr 2019 (UTC)
' Copyright _#E59E_ 2018Char-2019 Colon
'
' support sub routine
' for Font Editor _#E6B2_FEINT_#E6B2_
'  by Tsuru, sentaro & Colon

System((-)1)=0=>Stop

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
LpWhile Getkey1<>47
ClrText
Stop
IfEnd
SysCall(0X1D81


'Set up
ClrMat 
'WARNINGChar!Char!
'_#E693_ Don't delete this or the system will crashChar!Char!
'#_Break_0
'_#E692_ Don't delete this or the system will crashChar!Char!
'#_Mat _0
88->Dim List 3.B
'#CBINT
'#_Mat _1
'#G3M
'#GB2
'#_Str __<r>_,22,256
CoordOff:GridOff
AxesOff:LabelOff
BG-None
Plot/Line-Color Black 
Norm 0:EngOff
S-L-Thin:0->K:0->Z:1->B
RefrshCtrl 2:RefrshTime 0
SetFont 1
"Font File Manager (Version 1.21)"->Str 18
SysCall(0X1D77,&Str 18,0,4,0
SysCall(0X2B7,0
SysCall(0X2B8,3,0X103,0,0

'Get language
SysCall(0X12FC,0,&List 3
StrCmp($List 3,"English")=0=>1->Z
StrCmp($List 3,"Fran_#E608_ais")=0=>2->Z
StrCmp($List 3,"Espa_#E612_ol")=0=>3->Z
StrCmp($List 3,"Portugu_#E60B_s")=0=>4->Z
StrCmp($List 3,"Deutsch")=0=>5->Z
StrCmp($List 3,"Chinese")=0=>6->Z
StrCmp($List 3,"Italiano")=0=>7->Z
StrCmp($List 3,"Russian")=0=>8->Z
StrCmp($List 3,"Japanese")=0=>9->Z
Z=1=>"Bitmap File List"->Str 1
Z=2=>"Liste Fichier Bitmap"->Str 1
Z=3=>"Lista Archivo bitmap"->Str 1
Z=4=>"Lista Arquivo Bitmap"->Str 1
Z=5=>"BitmapChar-Dateiliste"->Str 1
Z=6=>"_#CEBB__#CDBC__#CEC4__#BCFE__#C1D0__#B1ED_"->Str 1
Z=7=>"Elenco file bitmap"->Str 1
Z=8=>"_#E572__#E670__#E669__#E672__#E66F__#E66B_ _#E571__#E660__#E672__#E673__#E671__#E66F__#E662__#E67C__#E66A__#E675__#E660__#E66A__#E66C_"->Str 1
Z=9=>"_#A5D3__#A5C3__#A5C8__#A5DE__#A5C3__#A5D7__#A5D5__#A5A1__#A5A4__#A5EB_"->Str 1

Lbl 0

SysCall(0X180E,0,0
'GetBitmapFileList
1->E
IsError(IsExist("**.bmp"))=0=>IsExist("**.bmp")
IsError(IsExist("**.bmp"))=>0->E
E=0=>Goto E
RowSize(Ans)->R
{R,10}->Dim Mat L.B
{R,23}->Dim Mat l.B

For 1->A To R
StrMid(StrMid(StrRotate($Ans[A],(-)4),5),StrSrc($Ans[A],"//",2)+1->$L[A]
IsExist($Ans[A])->S
StrLeft("  "+$L[A]+"          ",14)+":"+StrChar(" ",6-StrLen(Sprintf("%u",%S)))+Sprintf("%u",%S->$l[A]

SysCall(0X180E,A,R
Next

'GetIcon
'_Lbl _0
'_Gosub _z
{24,18}->Dim Mat a.w
".bmp"->Str 21
""->Str 22
SysCall(0X0C2C,&Str 21,&Str 22,&A#,&Mat a

SysCall(0X17F9


'File list
Lbl F
1->F:1->f:1->P

Lbl f
Screen.T
_ClrVram
'SetBackGraund
B=>SysCall(0X1EF8,23
Switch P
Case 1
FkeyMenu(1,919
FkeyMenu(2,1183
FkeyMenu(4,1170
FkeyMenu(5,56
FkeyMenu(6,6
Break
Case 2
FkeyMenu(1,391
FkeyMenu(5,673


FkeyMenu(6,6
Break
SwitchEnd

RowSize(L)->l
l>f+5=>f+5->l

Blue Locate Char!1,1,Str 1,O

System((-)2)<300=>Transp-Color #0XF81F
System((-)2)>=300=>Transp-Color #0XFBE0
For f->L To l
Locate Char!1,(L-f)+2,$l[L],O
WriteGraph @18,24((L-f)+1),18,24,Mat a
Next
Locate Char!1,(F-f)+2,$l[F],R
WriteGraph @18,24((F-f)+1),18,24,Mat a
Transp-Color 

'Scrollbar
SysCall(0X1E41,f,RowSize(L)

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

SysCall(0X1D81
Getkey@1->K


P=1 And K=0X753A=>Gosub V

P=1 And K=0X7539=>Gosub D
P=2 And K=0X753D=>Gosub N
P=2 And K=0X7539=>Gosub S

If P=1 And K=0X753C
Then 
Gosub D
Ans=0=>Goto 0
IfEnd


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

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

ElseIf K=0X7542:Then 
If F>1
Then Dsz F
F<f=>Dsz f
ElseIf F=1
RowSize(L)->F:F->f
IfEnd


ElseIf K=0X7547:Then 
If F<RowSize(L
Then Isz F
F>l=>Isz f
ElseIf F=RowSize(L
Then 1->F:1->f
IfEnd

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

For 1->a To RowSize(L
If K=Mat L[a,1:Then 
a->F:a->f:Break
IfEnd
Next

ElseIf K=0X753E:Then 
Isz P
P=3=>1->P

ElseIf P=1 And K=0X753D:Then 

SysCall(0X17F7,5
Locate Char!3,2,"["+$L[F]+".bmp]"

Z<>9=>SysCall(0X18EC,5,1,2,319,0
Z<>9=>SysCall(0X18EC,5,1,3,320,0
Z=9=>Locate Char!3,3,"_#CFF7__#B3FD__#A4B7__#A4DE__#A4B9__#A4AB_?"
'Z=9_=>__Locate _Char!5,2,""
SysCall(0X18EC,5,1,4,3,0
SysCall(0X18EC,5,1,5,4,0

Do
SysCall(0X1D81
Getkey1->K

If K=79:Then 
SysCall(0X17F9
Delete $L[F]+".bmp"
ClrText
SysCall(0X1D81
_DispVram
Goto 0
IfEnd
LpWhile K<>79 And K<>29 And K<>47
SysCall(0X17F9

ElseIf K=0X756B:Then 
Abs (1-B)->B

IfEnd
Goto f

'View Image
Lbl V
SysCall(0X32,20,0
_ClrVram
SysCall(0X2B7,3
BmpLoad($L[F]),0,(-)24,1,1
Getkey1
_ClrVram
SysCall(0X2B7,0
Return 

'Font File Information
Lbl D
SysCall(0X32,20,0
_ClrVram
'#_Mat _0
53->Dim List 1.B
Load($L[F]+".bmp"->List 1
'#_Mat _1

'Check Bitmap File Header
(List 1[0]<>66) Or (List 1[1]<>77) Or List 1[6] Or List 1[7] Or List 1[8] Or List 1[9] Or (List 1[10]<>62) Or List 1[11] Or List 1[12] Or List 1[13]=>Goto U
'Check Bitmap Information Header
(List 1[14]<>40) Or List 1[15] Or List 1[16] Or List 1[17] Or (List 1[26]<>1) Or List 1[27] Or (List 1[28]<>1) Or List 1[29] Or List 1[30] Or List 1[31] Or List 1[32] Or List 1[33] Or (List 1[38]<>18) Or (List 1[39]<>11) Or List 1[40] Or List 1[41] Or (List 1[42]<>18) Or (List 1[43]<>11) Or List 1[44] Or List 1[45] Or (List 1[46] And (List 1[46]<>2)) Or List 1[47] Or List 1[48] Or List 1[49] Or (List 1[50] And (List 1[50]<>2)) Or List 1[51] Or List 1[52]=>Goto U

"0X"+StrRight("0"+Hex(List 1[5]),2)+StrRight("0"+Hex(List 1[4]),2)->Str 19
StrRight("0"+Hex(List 1[3]),2)+StrRight("0"+Hex(List 1[2]),2)->Str 20
Exp(Str 19+Str 20->S
"0X"+StrRight("0"+Hex(List 1[21]),2)+StrRight("0"+Hex(List 1[20]),2)->Str 19
StrRight("0"+Hex(List 1[19]),2)+StrRight("0"+Hex(List 1[18]),2)->Str 20
Exp(Str 19+Str 20->W
"0X"+StrRight("0"+Hex(List 1[25]),2)+StrRight("0"+Hex(List 1[24]),2)->Str 19
StrRight("0"+Hex(List 1[23]),2)+StrRight("0"+Hex(List 1[22]),2)->Str 20
Exp(Str 19+Str 20->H
"0X"+StrRight("0"+Hex(List 1[37]),2)+StrRight("0"+Hex(List 1[36]),2)->Str 19
StrRight("0"+Hex(List 1[35]),2)+StrRight("0"+Hex(List 1[34]),2)->Str 20
Exp(Str 19+Str 20->s
""->Str 19
""->Str 20

Screen.G
_ClrVram

W=288 And H=144=>"External ASCII Normal Font"->Str 20
W=288 And H=48=>"External Gaiji Normal Font"->Str 20
W=288 And H=120=>"External Kana Normal Font"->Str 20
W=274 And H=114=>"External ASCII Mini Font"->Str 20
W=274 And H=38=>"External Gaiji Mini Font"->Str 20
W=274 And H=95=>"External Kana Mini Font"->Str 20


StrLen(Str 20)=0=>Goto U

K=0X7539=>Goto L



Blue LocateYX Char!0,0,$L[F]+".bmp"
Text Char!20,0,"Font Type :"
Text 23,119,Str 20,,M

_Rectangle 0,40,383,166,1,1,0
_Rectangle 2,42,381,164,0,0,1


Text 42,2,"Bitmap File Header",R,MB

Text 54,10,"<00> bfType",R,X
Text 64,10,"<02> bfSize",R,X
Text 74,10,"<06> bfReserved1",R,X
Text 84,10,"<08> bfReserved2",R,X
Text 94,10,"<10> bfOffBits",R,X

For 0->A To 4
Text 10A+54,110,":",R,X
Next
Text 54,120,"\"BM\"",R,X
Text 64,120,Sprintf("%u byte",S),R,X
Text 74,120,"00 00",R,X
Text 84,120,"00 00",R,X
Text 94,120,"62 byte",R,X



Text 42,180,"Bitmap Information Header",R,MB

Text 54,188,"<14> biSize",R,X
Text 64,188,"<18> biWidth",R,X
Text 74,188,"<22> biHeight",R,X
Text 84,188,"<26> biPlanes",R,X
Text 94,188,"<28> biBitCount",R,X
Text 104,188,"<30> biCompression",R,X
Text 114,188,"<34> biSizeImage",R,X
Text 124,188,"<38> biXPixPerXater",R,X
Text 134,188,"<42> biYPixPerXater",R,X
Text 144,188,"<46> biClrUsed",R,X
Text 154,188,"<50> biClrImportant",R,X
For 0->A To 10
Text 10A+54,308,":",R,X
Next
Text 54,318,"40 byte",R,X
Text 64,318,W,R,X
Text 74,318,H,R,X
Text 84,318,"1",R,X
Text 94,318,"1",R,X
Text 104,318,"0",R,X
Text 114,318,Sprintf("%u byte",s),R,X
Text 124,318,"2834 dot//m",R,X
Text 134,318,"2834 dot//m",R,X
Text 144,318,List 1[46],R,X
Text 154,318,List 1[50],R,X

FkeyMenu(1,919
'_FkeyMenu(_2,389
FkeyMenu(2,1183
FkeyMenu(5,56
FkeyMenu(6,673

Do
SysCall(0X1D81
Getkey1->k
LpWhile k<>47 And k<>28 And k<>37 And k<>69 And k<>79 And k<>39 And k<>29
ClrList 1


Switch k
Case 28
If F>1
Then Dsz F
F<f=>Dsz f
ElseIf F=1
RowSize(L)->F:F->f
IfEnd
Break
Case 37
If F<RowSize(L
Then Isz F
F>l=>Isz f
ElseIf F=RowSize(L
Then 1->F:1->f
IfEnd
Break

Case 39

SysCall(0X17F7,5
Locate @Char!3,2,"["+$L[F]+".bmp]"

Z<>9=>SysCall(0X18EC,5,1,2,319,0
Z<>9=>SysCall(0X18EC,5,1,3,320,0
Z=9=>Locate @Char!3,3,"_#CFF7__#B3FD__#A4B7__#A4DE__#A4B9__#A4AB_?"
'Z=9_=>__Locate _Char!5,2,""
SysCall(0X18EC,5,1,4,3,0
SysCall(0X18EC,5,1,5,4,0
Do
SysCall(0X1D81
Getkey1->K
If K=79:Then 
SysCall(0X17F9
Delete $L[F]+".bmp"
ClrText
SysCall(0X1D81
_DispVram
Return 0
IfEnd
LpWhile K<>79 And K<>29 And K<>47
SysCall(0X17F9

Break
SwitchEnd
k=69=>Gosub V
k=79=>Gosub L
k=29=>Gosub N

""->Str 19
""->Str 20
k=47=>Return 1
Goto D


'Unsupported file
Lbl U

SysCall(0X17FC,4
SysCall(0X18EC,1,1,2,2,0
Z=1 Or Z=8=>SysCall(0X18EC,2,1,1,1653,0
Z=4 Or Z=5=>SysCall(0X18EC,2,2,1,1653,0
Z=2 Or Z=3 Or Z=7=>SysCall(0X18EC,2,3,1,1653,0
Z=6=>SysCall(0X18EC,2,5,1,1653,0
If Z=9:Then 
"_#A4B3__#A4CE__#A5D5__#A5A1__#A5A4__#A5EB__#A4CF__#A5D5__#A5A9__#A5F3__#A5C8__#A4CB_"->Str 19
"_#C9E8__#B6A8__#A4B9__#A4EB__#A4B3__#A4C8__#A4AC__#B3F6__#C0B4__#A4DE__#A4BB__#A4F3__#A1A3_"->Str 20
Locate @Char!3,2,Str 19
Locate @Char!3,3,Str 20
IfEnd
0->K
Do
SysCall(0X1D81
LpWhile Getkey1<>47

SysCall(0X17F9
Return 


'Load Font Data
Lbl L
W-H=144=>BmpLoad(@AL$L[F]
W-H=240=>BmpLoad(@GL$L[F]
W-H=168=>BmpLoad(@KL$L[F]
W-H=160=>BmpLoad(@AM$L[F]
W-H=236=>BmpLoad(@GM$L[F]
W-H=179=>BmpLoad(@KM$L[F]

SysCall(0X17FC,1,0
SysCall(0X18EC,1,1,1,372,0

SysCall(0X1D81
_DispVram
SysCall(0X17F9
TicksWait 32
Return 

'Showing current font
Lbl N
SysCall(0X32,20,0
'#_Str __Theta_
SysCall(0X12fd,0,&Str 17
"[_#E692_]//[_#E693_] or Press : [EXIT]"->Str 18
Theta[17,1]=3 And Theta[17,2]=(-)88=>" [_#5CE6__#5C92_]//[_#5CE6__#5C93_] or Press : [EXIT]"->Str 18
SysCall(0X2B7,0
SysCall(0X2B8,3,0X3,0,0
SysCall(0X1D77,&Str 18,0,0,0
Screen.T
_ClrVram
Blue Locate Char!1,1,"Showing current font"
Locate Char!1,3,"[1]:ASCII Normal"
Locate Char!1,4,"[2]:Gaiji//Kana Normal"
Locate Char!1,5,"[3]:ASCII Mini"
Locate Char!1,6,"[4]:Gaiji//Kana Mini"
{2,1}->Dim Mat f.N
GetFont()->f\1
GetFontMini()->f\2

Switch f\1
Case 0:"Is not Extended."->Str 19
Break
Case 1:"ASCII is extended."->Str 19
Break
Case 2:"Gaiji is extended."->Str 19
Break
Case 3:"ASCII//Gaiji are extended."->Str 19
Break
Case 4:"Kana is extended."->Str 19
Break
Case 5:"ASCII//Kana are extended."->Str 19
Break
Case 6:"Gaiji//Kana are extended."->Str 19
Break
Case 7:"ASCII//Gaiji//Kana are extended."->Str 19
Break
SwitchEnd

Switch f\2
Case 0:"Is Not Extended."->Str 20
Break
Case 1:"ASCII is extended."->Str 20
Break
Case 2:"Gaiji is extended."->Str 20
Break
Case 3:"ASCII//Gaiji are extended."->Str 20
Break
Case 4:"Kana is extended."->Str 20
Break
Case 5:"ASCII//Kana are extended."->Str 20
Break
Case 6:"Gaiji//Kana are extended."->Str 20
Break
Case 7:"ASCII//Gaiji//Kana are extended."->Str 20
Break
SwitchEnd


Magenta Text @Char!6*24+6,0,"Normal"
Magenta Text @Char!7*24,0,"Mini"
Magenta Text @Char!6*24+6,66,":"+Str 19
Magenta Text @Char!7*24,66,":"+Str 20

0->k
Do
SysCall(0X1D81
Getkey1->k
LpWhile k<>72 And k<>62 And k<>52 And k<>73 And k<>47
SysCall(0X2B8,3,0X103,0,0
k=72=>Goto 1
k=62=>Goto 2
k=52=>Goto 3
k=73=>Goto 4

_ClrVram


ClrMat f
ClrMat Theta
'#_Str __<r>_
SysCall(0X1D77,&Str 18,0,4,0
SysCall(0X2B7,0
SysCall(0X2B8,3,0X103,0,0
0->k:0->K:1->P
Return 
Lbl 1
ClrText
Blue Locate Char!1,1,"ASCII Normal"
Locate 2,2," Char!\"#$%&'()**++,Char-.//"
Locate 2,3,"0123456789:;<=>?"
Locate 2,4,"@ABCDEFGHIJKLMNO"
Locate 2,5,"PQRSTUVWXYZ[\\]^_"
Locate 2,6,"`abcdefghijklmno"
Locate 2,7,"pqrstuvwxyz{|}~"
Magenta Locate 21,1,"_#5CE6__#5CAC_"
Magenta LocateYX @Char!60,360,"1"
Magenta LocateYX @Char!84,360,"//"
Magenta LocateYX @Char!108,360,"4"
Magenta Locate 21,8,"_#5CE6__#5C9D_"
Do
SysCall(0X2B7,0
SysCall(0X1D81
Getkey1->k
LpWhile k<>47 And k<>28 And k<>37
k=28=>Goto 4
k=37=>Goto 2
Goto N

Lbl 2
ClrText
Blue Locate Char!1,1,"Gaiji//Kana Normal"
Locate 2,2,"_#FF80__#FF81__#FF82__#FF83__#FF84__#FF85__#FF86__#FF87__#FF88__#FF89__#FF8A__#FF8B__#FF8C__#FF8D__#FF8E__#FF8F_"
Locate 2,3,"_#FF90__#FF91__#FF92__#FF93__#FF94__#FF95__#FF96__#FF97__#FF98__#FF99__#FF9A__#FF9B__#FF9C__#FF9D__#FF9E__#FF9F_"
Locate 2,4,"_#FFA0_"
Locate 2,5,""
Locate 2,6,""
Locate 2,7,""
Locate 2,8,"_#FFE0__#FFE1__#FFE2__#FFE3__#FFE4__#FFE5__#FFE6__#FFE7__#FFE8__#FFE9__#FFEA__#FFEB__#FFEC__#FFEE__#FFEF_"
Magenta Locate 21,1,"_#5CE6__#5C9C_"
Magenta LocateYX @Char!60,360,"2"
Magenta LocateYX @Char!84,360,"//"
Magenta LocateYX @Char!108,360,"4"
Magenta Locate 21,8,"_#5CE6__#5C9D_"
Do
SysCall(0X2B7,0
SysCall(0X1D81
Getkey1->k
LpWhile k<>47 And k<>28 And k<>37
k=28=>Goto 1
k=37=>Goto 3
Goto N

Lbl 3
ClrText
Blue Locate Char!1,1,"ASCII Mini"
Text @30,18," Char!\"#$%&'()**++,Char-.//"
Text @50,18,"0123456789:;<=>?"
Text @70,18,"@ABCDEFGHIJKLMNO"
Text @90,18,"PQRSTUVWXYZ[\\]^_"
Text @110,18,"`abcdefghijklmno"
Text @130,18,"pqrstuvwxyz{|}~"
Magenta Locate 21,1,"_#5CE6__#5C9C_"
Magenta LocateYX @Char!60,360,"3"
Magenta LocateYX @Char!84,360,"//"
Magenta LocateYX @Char!108,360,"4"
Magenta Locate 21,8,"_#5CE6__#5C9D_"
Do
SysCall(0X2B7,0
SysCall(0X1D81
Getkey1->k
LpWhile k<>47 And k<>28 And k<>37
k=28=>Goto 2
k=37=>Goto 4
Goto N

Lbl 4
ClrText
Blue Locate Char!1,1,"Gaiji//Kana Mini"
Text @30,18,"_#FF80__#FF81__#FF82__#FF83__#FF84__#FF85__#FF86__#FF87__#FF88__#FF89__#FF8A__#FF8B__#FF8C__#FF8D__#FF8E__#FF8F_"
Text @50,18,"_#FF90__#FF91__#FF92__#FF93__#FF94__#FF95__#FF96__#FF97__#FF98__#FF99__#FF9A__#FF9B__#FF9C__#FF9D__#FF9E__#FF9F_"
Text @80,18,"_#FFA0_"
Text @100,18,""
Text @120,18,""
Text @140,18,""
Text @160,18,"_#FFE0__#FFE1__#FFE2__#FFE3__#FFE4__#FFE5__#FFE6__#FFE7__#FFE8__#FFE9__#FFEA__#FFEB__#FFEC__#FFEE__#FFEF_"
Magenta Locate 21,1,"_#5CE6__#5C9C_"
Magenta LocateYX @Char!60,360,"4"
Magenta LocateYX @Char!84,360,"//"
Magenta LocateYX @Char!108,360,"4"
Magenta Locate 21,8,"_#5CE6__#5CAD_"
Do
SysCall(0X2B7,0
SysCall(0X1D81
Getkey1->k
LpWhile k<>47 And k<>28 And k<>37
k=28=>Goto 3
k=37=>Goto 1
Goto N

'Search
Lbl S
FkeyMenu(1,"",C
FkeyMenu(2,"",C
FkeyMenu(3,"",C
FkeyMenu(4,"",C
FkeyMenu(5,"",C
FkeyMenu(6,"",C
SysCall(0X1EF8,9

SysCall(0X12FC,545,&Str 15
Z=9=>"_#BCEC__#CBF7_"->Str 15

SysCall(0X12FC,134,&Str 16
Z=9=>"_#BCEC__#CBF7__#BDE1__#B9FB__#A4AC__#A4A2__#A4EA__#A4DE__#A4BB__#A4F3_"->Str 16

Blue Locate 1,1,Str 15,O

{1,256}->Dim Mat 52.B
""->$List 52
{2,1}->Dim Mat Theta.B
SysCall(0X32,20,0X84
0->X
Lbl s
Gosub I,0,0

$List 52->Str 17

If K=0X7532 Or K=0X754D:Then 0->K:1->P:Return 
IfEnd
If StrLen(Str 17)=0
Then Theta1<0=>SysCall(0X32,20,Theta1
Goto s
IfEnd

1->d
For 1->D To RowSize(L
StrSrc($L[D],Str 17)=1=>0->dD->FBreak
Next


If d And StrLen(Str 17):Then 

SysCall(0X17FC,4
SysCall(0X18EC,1,1,2,2,0

Locate @Char!3,3,Str 16
0->K
Do
SysCall(0X1D81
LpWhile Getkey1<>47
SysCall(0X17F9
Theta1<0=>SysCall(0X32,20,Theta1
Goto s

IfEnd

F->f
1->P
Return 


Lbl E

SysCall(0X180E,1,1

SysCall(0X17F9

Do

Screen.T
_ClrVram
'SetBackGraund
B=>SysCall(0X1EF8,23
SysCall(0X12FC,673,Str 16

Blue Locate Char!1,1,Str 1,O
Locate Char!1,4,Str 16,O
'Scrollbar
SysCall(0X1E41,1,1
SysCall(0X31,20)<>1=>SysCall(0X32,20,0X84

SysCall(0X1D81
Getkey@1->K
K=0X756B=>Abs (1-B)->B

LpWhile K<>0X7532 And K<>0X754D

ClrText:SysCall(0X2B8,3,0X3,0,0):0
Return 


Lbl I
Local s,m
'#_Break_0
'0_->_x
1->s
FkeyMenu(5,775
FkeyMenu(6,397


Do
Locate Char!1,2,"[        ]"
Locate Char!2,2,$List 52

SysCall(0X31,21)->m

SysCall(0X01F1,X+1,1
m=1=>SysCall(0X08C7,6
m=2=>SysCall(0X08C7,0

SysCall(0X31,20)->Theta1
SysCall(0X1D81
Getkey@1->K
K=0X7562=>SysCall(0X32,20,0

If K=0X753E:Then 
SysCall(0X32,20,0
PopUpWin(0)
SysCall(0X08C8
SysCall(0X17F7,3)

Locate Char!3,3,"==SYMBOL=="

Do
Locate Char!4,5,"Char!#$%&'++Char-;@^_`~"
Locate Char!3+s,5,StrMid("Char!#$%&'++Char-;@^_`~",s,1),R
SysCall(0X1D81
Getkey1->k
k=27 And s<=14=>Isz s
k=38 And s>=1=>Dsz s:
s=0=>14->s
s=15=>1->s
LpWhile k<>47 And k<>31
SysCall(0X17F9)
k=47=>0->K
k=31=>StrAsc(StrMid("Char!#$%&'++Char-;@^_`~",s,1)->K
PopUpWin(9)
IfEnd

0->Theta

(0X20<=K And K<=0X7E) And K<>0X22=>1->Theta

SysCall(0X31,20)->Theta2

Switch m
Case 1
If Theta And StrLen($List 52)<=8:Then 

X=StrLen($List 52)=>StrLeft($List 52,X)+StrChar(K)+StrRight($List 52,StrLen($List 52)-X-1)->$List 52
X<StrLen($List 52)=>StrLeft($List 52,X)+StrChar(K)+StrRight($List 52,StrLen($List 52)-X-1)->$List 52

X<8=>Isz X

'DEL
ElseIf K=0X7549:Then 
 If X=0:Then 
 StrRight($List 52,StrLen($List 52)-1)->$List 52

 ElseIf X=StrLen($List 52):Then 
 StrLeft($List 52,X-1)+StrRight($List 52,StrLen($List 52)-X)->$List 52 Dsz X

 Else 
 StrLeft($List 52,X)+StrRight($List 52,StrLen($List 52)-X-1)->$List 52
 IfEnd


IfEnd
Break
Case 2

If Theta And StrLen($List 52)<8:Then 
StrLeft($List 52,X)+StrChar(K)+StrRight($List 52,StrLen($List 52)-X)->$List 52
Isz X


'DEL
ElseIf K=0X7549:Then 
 If X=0:Then 
 StrRight($List 52,StrLen($List 52)-1)->$List 52

 Else 
 StrLeft($List 52,X-1)+StrRight($List 52,StrLen($List 52)-X)->$List 52 Dsz X
 IfEnd

IfEnd
Break
SwitchEnd
0

Switch K
'Left
Case 0X7544
0<X=>Dsz X:
Break

'Right
Case 0X7545
X<StrLen($List 52)=>Isz X
Break

'F5(A<>a)
Case 0X753D
Theta1=4=>SysCall(0X32,20,0X08)
Theta1=8=>SysCall(0X32,20,0X04)
Theta2=0XFFFFFF84=>SysCall(0X32,20,0X88)
Theta2=0XFFFFFF88=>SysCall(0X32,20,0X84)

Break

'AC
Case 0X753F
If StrLen($List 52)=0:Then 
'_SysCall(_0X08C8
'_ACBreak_
'_SysCall(_0X2B7,0
'_SysCall(_0X2B8,3,0X103,0,0

Else ""->$List 52
0->X
IfEnd
SysCall(0X32,20,Theta1
Break

SwitchEnd

LpWhile K<>0X7532 And K<>0X754D And K<>0X7534

SysCall(0X08C8


''#_Break_1

Return 