Skip to content
Snippets Groups Projects
Commit 41902b20 authored by deuce's avatar deuce
Browse files

Some minor changes to DigitalMan's CSI = Ps... n implementation.

1) Use a functional default (1) for P1.
2) Respond with an empty P2 parameter if nothing is set.
3) Only respond if there is a single parameter.  If there is more than one,
   it's not a request.

While we're here, clean up the formatting of cterm.txt.
Tabs for indentation, spaces for alignment, don't wrap with 80-column
displays using 8-char tabs (default with more).  The ECMA-048 reference
will always wrap however.
parent 3629af59
No related branches found
No related tags found
No related merge requests found
...@@ -1079,43 +1079,43 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int * ...@@ -1079,43 +1079,43 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
cterm->doorway_mode=0; cterm->doorway_mode=0;
break; break;
case 'n': /* Query (extended) state information */ case 'n': /* Query (extended) state information */
if(cterm->escbuf[1] != '=' || retbuf == NULL) if(retbuf == NULL)
break; break;
tmp[0] = 0; tmp[0] = 0;
switch(strtoul(cterm->escbuf+2,NULL,10)) { if ((strcmp(cterm->escbuf,"[=n") == 0) || (strcmp(cterm->escbuf,"[=1n"))) {
case 1: /* Font state set via "CSI sp D" */ sprintf(tmp, "\x1b[=1;%u;%u;%u;%u;%u;%un"
sprintf(tmp, "\x1b[=1;%u;%u;%u;%u;%u;%un" ,CONIO_FIRST_FREE_FONT
,CONIO_FIRST_FREE_FONT ,(uint8_t)cterm->setfont_result
,(uint8_t)cterm->setfont_result ,(uint8_t)cterm->altfont[0]
,(uint8_t)cterm->altfont[0] ,(uint8_t)cterm->altfont[1]
,(uint8_t)cterm->altfont[1] ,(uint8_t)cterm->altfont[2]
,(uint8_t)cterm->altfont[2] ,(uint8_t)cterm->altfont[3]
,(uint8_t)cterm->altfont[3] );
); }
break; if (!strcmp(cterm->escbuf,"[=2n")) {
case 2: /* Video and emulation modes/flags set via "CSI ? N h" */ int vidflags = GETVIDEOFLAGS();
{ strcpy(tmp, "\x1b[=2");
int vidflags = GETVIDEOFLAGS(); if(cterm->origin_mode)
strcpy(tmp, "\x1b[=2"); strcat(tmp, ";6");
if(cterm->origin_mode) if(cterm->autowrap)
strcat(tmp, ";6"); strcat(tmp, ";7");
if(cterm->autowrap) if(cterm->cursor == _NORMALCURSOR)
strcat(tmp, ";7"); strcat(tmp, ";25");
if(cterm->cursor == _NORMALCURSOR) if(vidflags & CIOLIB_VIDEO_ALTCHARS)
strcat(tmp, ";25"); strcat(tmp, ";31");
if(vidflags & CIOLIB_VIDEO_ALTCHARS) if(vidflags & CIOLIB_VIDEO_NOBRIGHT)
strcat(tmp, ";31"); strcat(tmp, ";32");
if(vidflags & CIOLIB_VIDEO_NOBRIGHT) if(vidflags & CIOLIB_VIDEO_BGBRIGHT)
strcat(tmp, ";32"); strcat(tmp, ";33");
if(vidflags & CIOLIB_VIDEO_BGBRIGHT) if(vidflags & CIOLIB_VIDEO_BLINKALTCHARS)
strcat(tmp, ";33"); strcat(tmp, ";34");
if(vidflags & CIOLIB_VIDEO_BLINKALTCHARS) if(vidflags & CIOLIB_VIDEO_NOBLINK)
strcat(tmp, ";34"); strcat(tmp, ";35");
if(vidflags & CIOLIB_VIDEO_NOBLINK) if (strlen(tmp) == 4) { // Nothing set
strcat(tmp, ";35"); strcat(tmp, ";");
strcat(tmp, "n");
break;
} }
strcat(tmp, "n");
break;
} }
if(*tmp && strlen(retbuf) + strlen(tmp) < retsize) if(*tmp && strlen(retbuf) + strlen(tmp) < retsize)
strcat(retbuf, tmp); strcat(retbuf, tmp);
......
...@@ -113,37 +113,41 @@ CSI = [ p1 [ ; p2 ] ] { ...@@ -113,37 +113,41 @@ CSI = [ p1 [ ; p2 ] ] {
SOURCE: CTerm only. SOURCE: CTerm only.
CSI = [ p1 [ ; ... ] ] n CSI = [ p1 [ ; ... ] ] n
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
State/Mode Request/Report State/Mode Request/Report
Defaults: p1 = 0 Defaults: p1 = 1
When p1 is 1, CTerm will respond with a Font State Report of the form When p1 is 1, CTerm will respond with a Font State Report of the form
CSI = 1 ;pF ;pR ;pS0 ;pS1 ;pS2 ;pS3 n CSI = 1 ;pF ;pR ;pS0 ;pS1 ;pS2 ;pS3 n
pF is the first available loadable-font slot number pF is the first available loadable-font slot number
pR is the result of the previous "Font Selection" request: pR is the result of the previous "Font Selection" request:
0 = successful font selection 0 = successful font selection
1 = font selection requests are not supported by client 1 = font selection requests are not supported by client
2 = required subsystem for font use has not been initialized 2 = required subsystem for font use has not been initialized
3 = selected font is not available or is incompatible with current video mode 3 = selected font is not available or is incompatible with
current video mode
4 = invalid font slot number specified in request 4 = invalid font slot number specified in request
5 = required video mode for selected font is incompatible with current video mode 5 = required video mode for selected font is incompatible
with current video mode
6 = memory allocation failure 6 = memory allocation failure
99 = no font selection request has been received 99 = no font selection request has been received
pS0 - pS3 contain the font slots numbers of previously successful "Font Selection" requests pS0 - pS3 contain the font slots numbers of previously successful
into the 4 available alternate-font style/attribute values: "Font Selection" requests into the 4 available alternate-font
pS0 - normal attribute font slot style/attribute values:
PS1 - high intensity foreground attribute font slot pS0 - normal attribute font slot
PS2 - blink attribute font slot PS1 - high intensity foreground attribute font slot
PS3 - high intensity blink attribute font slot PS2 - blink attribute font slot
PS3 - high intensity blink attribute font slot
When p1 is 2, CTerm will respond with a Mode Report of the form
CSI = 2[;pN [;pN] [...]] n When p1 is 2, CTerm will respond with a Mode Report of the form
Where pN represent zero or more mode values set previously (e.g. via CSI ? pN h). CSI = 2[;pN [;pN] [...]] n
Mode values cleared (disabled via CSI ? pN l) will not be included in the set of values Where pN represent zero or more mode values set previously
returned in the Mode Report. (e.g. via CSI ? pN h). Mode values cleared (disabled via CSI ? pN l)
will not be included in the set of values returned in the Mode
Other values of p1 will be ignored by CTerm. Report. If no modes are currently set, an empty parameter will be
included as the first and only pN.
SOURCE: CTerm only.
CSI = 255 h CSI = 255 h
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
...@@ -153,22 +157,22 @@ CSI = 255 h ...@@ -153,22 +157,22 @@ CSI = 255 h
CSI ? 6 h CSI ? 6 h
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Enable origin mode. Enable origin mode.
In this mode, position parameters are relative to the top left of the In this mode, position parameters are relative to the top left of the
scrolling region, not the screen. scrolling region, not the screen.
SOURCE: Digital VT102 User Guide SOURCE: Digital VT102 User Guide
CSI ? 7 h CSI ? 7 h
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Enable auto wrap. Enable auto wrap.
This is the normal mode in which a write to the last column of a This is the normal mode in which a write to the last column of a
row will move the cursor to the start of the next line triggering a row will move the cursor to the start of the next line triggering a
scroll if required to create a new line. scroll if required to create a new line.
SOURCE: Digital VT102 User Guide SOURCE: Digital VT102 User Guide
CSI ? 25 h CSI ? 25 h
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
...@@ -180,8 +184,8 @@ CSI ? 31 h ...@@ -180,8 +184,8 @@ CSI ? 31 h
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Enable bright alt character set Enable bright alt character set
With this mode set, the bright (1) graphic rendition selects characters With this mode set, the bright (1) graphic rendition selects
from an alternate character set. characters from an alternate character set.
CSI ? 32 h CSI ? 32 h
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
...@@ -221,22 +225,22 @@ CSI = 255 l ...@@ -221,22 +225,22 @@ CSI = 255 l
CSI ? 6 h CSI ? 6 h
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Disable origin mode. Disable origin mode.
In this mode, position parameters are relative to the top left of the In this mode, position parameters are relative to the top left of the
screen, not the scrolling region. screen, not the scrolling region.
SOURCE: Digital VT102 User Guide SOURCE: Digital VT102 User Guide
CSI ? 7 l CSI ? 7 l
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Disable auto wrap. Disable auto wrap.
This mode causes a write to the last column of a to leave the This mode causes a write to the last column of a to leave the
cursor where it was before the write occurred, overwriting anything cursor where it was before the write occurred, overwriting anything
which was previously written to the same position. which was previously written to the same position.
SOURCE: Digital VT102 User Guide SOURCE: Digital VT102 User Guide
CSI ? 25 l CSI ? 25 l
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
...@@ -302,12 +306,12 @@ CSI [ p1 [ ; p2 ] ] * r ...@@ -302,12 +306,12 @@ CSI [ p1 [ ; p2 ] ] * r
CSI [ p1 [ ; p2 ] ] r CSI [ p1 [ ; p2 ] ] r
NON-STANDARD EXTENSION. NON-STANDARD EXTENSION.
Set Top and Bottom Margins Set Top and Bottom Margins
Defaults: p1 = 1 Defaults: p1 = 1
p2 = last line on screen p2 = last line on screen
Selects top and bottom margins, defining the scrolling region. P1 is Selects top and bottom margins, defining the scrolling region. P1 is
the line number of the first line in the scrolling region. P2 is the line the line number of the first line in the scrolling region. P2 is the
number of the bottom line. line number of the bottom line.
CSI [ p1 ] @ CSI [ p1 ] @
Insert Character(s) Insert Character(s)
...@@ -363,12 +367,12 @@ CSI [ p1 [ ; p2 ] ] sp D ...@@ -363,12 +367,12 @@ CSI [ p1 [ ; p2 ] ] sp D
font selection. Only X11 and SDL currently do. font selection. Only X11 and SDL currently do.
Supported p1 values: Supported p1 values:
0 - Default font 0 - Default font
1 - Font selected by the high intensity bit when CSI [ ? 31 h is 1 - Font selected by the high intensity bit when CSI [ ? 31 h
enabled is enabled
2 - Font selected by the blink intensity bit when CSI [ ? 34 h is 2 - Font selected by the blink intensity bit when CSI [ ? 34 h
enabled is enabled
3 - Font selected by both the high intensity and blink bits when 3 - Font selected by both the high intensity and blink bits
both CSI [ ? 31 h and CSI [ ? 34 h are enabled when both CSI [ ? 31 h and CSI [ ? 34 h are enabled
Currently included fonts are: Currently included fonts are:
0 - Codepage 437 English 0 - Codepage 437 English
1 - Codepage 1251 Cyrillic, (swiss) 1 - Codepage 1251 Cyrillic, (swiss)
...@@ -413,27 +417,28 @@ CSI [ p1 [ ; p2 ] ] sp D ...@@ -413,27 +417,28 @@ CSI [ p1 [ ; p2 ] ] sp D
40 - Topaz Plus (Amiga) 40 - Topaz Plus (Amiga)
41 - MicroKnight (Amiga) 41 - MicroKnight (Amiga)
42 - Topaz (Amiga) 42 - Topaz (Amiga)
Not all fonts are supported in all modes. If a font is not supported in Not all fonts are supported in all modes. If a font is not supported
the current mode, no action is taken, but there should be a non-zero in the current mode, no action is taken, but there should be a
'Font Selection result' value in the Font State Report. non-zero 'Font Selection result' value in the Font State Report.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
CSI [ p1 ] E CSI [ p1 ] E
Cursor Next Line Cursor Next Line
Defaults: p1 = 1 Defaults: p1 = 1
Moves the cursor to the first column of the line p1 down from the current position. Moves the cursor to the first column of the line p1 down from the
Moving past the bottom of the screen scrolls the screen up the remaining current position. Moving past the bottom of the screen scrolls the
number of lines filling newly added lines with the current attribute. screen up the remaining number of lines filling newly added lines
with the current attribute.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
CSI [ p1 ] F CSI [ p1 ] F
Cursor Preceding Line Cursor Preceding Line
Defaults: p1 = 1 Defaults: p1 = 1
Moves the cursor to the first column if the row p1 up from the current position. Moves the cursor to the first column if the row p1 up from the
Attempting to move past the screen boundaries stops the cursor current position. Attempting to move past the screen boundaries
at the screen boundary. stops the cursor at the screen boundary.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
...@@ -441,7 +446,7 @@ CSI [ p1 ] G ...@@ -441,7 +446,7 @@ CSI [ p1 ] G
Cursor Character Absolute Cursor Character Absolute
Defaults: p1 = 1 Defaults: p1 = 1
Movies the cursor to column p1 of the current row. Movies the cursor to column p1 of the current row.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
CSI [ p1 [ ; p2 ] ] H CSI [ p1 [ ; p2 ] ] H
...@@ -480,8 +485,8 @@ CSI [ p1 ] L ...@@ -480,8 +485,8 @@ CSI [ p1 ] L
Insert Line(s) Insert Line(s)
Defaults: p1 = 1 Defaults: p1 = 1
Inserts p1 lines at the current line position. The current line and Inserts p1 lines at the current line position. The current line and
those after it are scrolled down and the new empty lines are filled with those after it are scrolled down and the new empty lines are filled
the current attribute. with the current attribute.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
...@@ -509,9 +514,10 @@ CSI N ...@@ -509,9 +514,10 @@ CSI N
CSI [ p1 ] P CSI [ p1 ] P
Delete Character Delete Character
Defaults: p1 = 1 Defaults: p1 = 1
Deletes the character at the current position by shifting all characters Deletes the character at the current position by shifting all
from the current column + p1 left to the current column. Opened blanks characters from the current column + p1 left to the current column.
at the end of the line are filled with the current attribute. Opened blanks at the end of the line are filled with the current
attribute.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
...@@ -542,8 +548,8 @@ CSI U ...@@ -542,8 +548,8 @@ CSI U
CSI [ p1 ] X CSI [ p1 ] X
Erase Character Erase Character
Defaults: p1 = 1 Defaults: p1 = 1
Erase p1 characters starting at the current character. Will not erase past the end Erase p1 characters starting at the current character. Will not erase
of line. past the end of line.
Erased characters are set to the current attribute. Erased characters are set to the current attribute.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
...@@ -562,11 +568,11 @@ CSI [ p1 ] c ...@@ -562,11 +568,11 @@ CSI [ p1 ] c
If p1 is 0, CTerm will reply with the sequence: If p1 is 0, CTerm will reply with the sequence:
CSI = 67;84;101;114;109;pN c CSI = 67;84;101;114;109;pN c
64;84;101;114;109 is the ASCII values of the "CTerm" string. pN is the 64;84;101;114;109 is the ASCII values of the "CTerm" string. pN is the
CVS revision ID of CTerm with dots converted to semi-colons (e.g. "1;156"). CVS revision ID of CTerm with dots converted to semi-colons
Use the CVS revision to detect if a specific feature is available. If (e.g. "1;156"). Use the CVS revision to detect if a specific feature
you are adding features to a forked version of cterm, please do so by is available. If you are adding features to a forked version of cterm,
adding an extra parameter to the end, not by incrementing any existing please do so by adding an extra parameter to the end, not by
one! incrementing any existing one!
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
...@@ -586,13 +592,13 @@ CSI [ p1 [ ; pX ... ] ] m ...@@ -586,13 +592,13 @@ CSI [ p1 [ ; pX ... ] ] m
7 - Negative Image - Reverses FG and BG X X 7 - Negative Image - Reverses FG and BG X X
8 - Concealed characters, sets the X 8 - Concealed characters, sets the X
foreground colour to the background foreground colour to the background
colour. colour.
22 - Normal intensity X 22 - Normal intensity X
25 - Steady (Not blinking) X 25 - Steady (Not blinking) X
27 - Positive Image - Reverses FG and BG X X 27 - Positive Image - Reverses FG and BG X X
NOTE: This should be a separate NOTE: This should be a separate
attribute than 7 but this attribute than 7 but this
implementation makes them equal implementation makes them equal
30 - Black foreground X 30 - Black foreground X
31 - Red foreground X 31 - Red foreground X
32 - Green foreground X 32 - Green foreground X
...@@ -630,8 +636,8 @@ CSI [ p1 ] n ...@@ -630,8 +636,8 @@ CSI [ p1 ] n
the current row. the current row.
255 - NON-STANDARD EXTENSION 255 - NON-STANDARD EXTENSION
Replies as though a CSI [ 6 n was received with the cursor in Replies as though a CSI [ 6 n was received with the cursor in
the bottom right corner. i.e.: Returns the terminal size as a the bottom right corner. i.e.: Returns the terminal size as
position report. a position report.
SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
(parameters 5 and 6 only) (parameters 5 and 6 only)
...@@ -639,12 +645,12 @@ CSI [ p1 ] n ...@@ -639,12 +645,12 @@ CSI [ p1 ] n
CSI ? [ p1 [ pX ... ] ] s CSI ? [ p1 [ pX ... ] ] s
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Save Mode Setting Save Mode Setting
Saves the current mode states as specified by CSI l and CSI h. If Saves the current mode states as specified by CSI l and CSI h. If
p1 is omitted, saves all such states. If pX is included, saves only p1 is omitted, saves all such states. If pX is included, saves only
the specified states (arguments to CSI l/h). the specified states (arguments to CSI l/h).
SOURCE: SyncTERM only SOURCE: SyncTERM only
CSI s CSI s
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
...@@ -657,18 +663,18 @@ CSI s ...@@ -657,18 +663,18 @@ CSI s
CSI ? [ p1 [ pX ... ] ] u CSI ? [ p1 [ pX ... ] ] u
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Restore Mode Setting Restore Mode Setting
Saves the current mode states as specified by CSI l and CSI h. If Saves the current mode states as specified by CSI l and CSI h. If
p1 is omitted, saves all such states. If pX is included, restores p1 is omitted, saves all such states. If pX is included, restores
all the specified states (arguments to CSI l/h) all the specified states (arguments to CSI l/h)
SOURCE: SyncTERM only SOURCE: SyncTERM only
CSI u CSI u
NON-STANDARD EXTENSION NON-STANDARD EXTENSION
Restore Cursor Position Restore Cursor Position
Move the cursor to the last position saved by CSI s. If no position has Move the cursor to the last position saved by CSI s. If no position
been saved, the cursor is not moved. has been saved, the cursor is not moved.
SOURCE: ANSI.SYS SOURCE: ANSI.SYS
...@@ -689,13 +695,13 @@ considered as part of the music string. You would see things such as: ...@@ -689,13 +695,13 @@ considered as part of the music string. You would see things such as:
CSI MFABCD 0x0e and the F would not be played as a note. This just added CSI MFABCD 0x0e and the F would not be played as a note. This just added
further confusion to the mess. further confusion to the mess.
Later on, BananaCom realized the conflict between delete line and music, so they Later on, BananaCom realized the conflict between delete line and music, so
added *another* broken code CSI N (Properly, erase in field... not implemented they added *another* broken code CSI N (Properly, erase in field... not
in many BBS clients) which was to provide an "unbroken" method of playing music implemented in many BBS clients) which was to provide an "unbroken" method of
strings. They also used CSI Y to disambiguate delete line, CSI Y is supposed playing music strings. They also used CSI Y to disambiguate delete line, CSI Y
to be a vertical tab (also not implemented in very many clients). BananaCom is supposed to be a vertical tab (also not implemented in very many clients).
also introduced many more non-standard and standard-breaking control sequences BananaCom also introduced many more non-standard and standard-breaking control
which are not supported by CTerm. sequences which are not supported by CTerm.
CTerm has further introduced a standard compliant ANSI music introducer CSI | CTerm has further introduced a standard compliant ANSI music introducer CSI |
...@@ -756,9 +762,9 @@ A, B, C, D, E, F, G, or P Plays the named note or pause from the current ...@@ -756,9 +762,9 @@ A, B, C, D, E, F, G, or P Plays the named note or pause from the current
play the note for. For example, 4 would indicate a 1/4 note. play the note for. For example, 4 would indicate a 1/4 note.
The default note length is 4. The default note length is 4.
L### Set the notelength parameter for all following notes which do not have L### Set the notelength parameter for all following notes which do not have
one specified (ie: override the quarter-note default) Legal note lengths one specified (ie: override the quarter-note default) Legal note
are 1-64 indicating the reciprocal of the fraction (ie: 4 indicates a 1/4 lengths are 1-64 indicating the reciprocal of the fraction (ie: 4
note). indicates a 1/4 note).
< Move the next lowest octave. < Move the next lowest octave.
Octave cannot go above six or below zero. Octave cannot go above six or below zero.
> Move to the next highest octave. > Move to the next highest octave.
...@@ -776,5 +782,6 @@ notes) I am willing to do that assuming the notes still sound "right". ...@@ -776,5 +782,6 @@ notes) I am willing to do that assuming the notes still sound "right".
!!!PLEASE NOTE!!! If you are playing some ANSI Music then ask the user if they !!!PLEASE NOTE!!! If you are playing some ANSI Music then ask the user if they
heard it, ALWAYS follow it with an 0x0f 0x0e is the shift lock character which heard it, ALWAYS follow it with an 0x0f 0x0e is the shift lock character which
*will* cause people with anything but an ANSI-BBS terminal (ie: *nix users using *will* cause people with anything but an ANSI-BBS terminal (ie: *nix users
the bundled telnet app) to have their screen messed up. 0x0f "undoes" the 0x0e. using the bundled telnet app) to have their screen messed up. 0x0f "undoes"
the 0x0e.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment