Is everything in order? Challenge:
Input: a string, consisting of only printable ASCII characters
Output: a truthy/falsey value whether its characters are in alphabetical order (based on their UTF-8 unicode values), from any starting point inside the string including wrap-around by going left-to-right
For example: xyzabc would give a truthy result, because we could travel a→b→c→x→y→z, but xzy would give a falsey result, because all possible starting points (x→y→z; y→z→x; z→x→y) are not in the correct order.
This sounds pretty simple, right? But there is one catch, as this is a restricted-source challenge: your program/function has to be in the correct order† as well.
†: Based on the order of the characters in your own codepage. i.e. a program written in Jelly need to be (with the wraparound of course) in the order of its own codepage, instead of UTF-8 order.
Challenge rules:

The input can be in any reasonable format. Can be a string, read from STDIN, a list of characters, etc. (No, you are not allowed to take a list of unicode values - which would basically be an integer list - unless your language does this conversion by default (i.e. Java (char only), Whitespace, etc.)
The input is guaranteed to be printable ASCII (range \$[32,126]\$ / [' ','~']).
If your program/function is written in a different codepage, it does not necessary have to hold a truthy value when used as input for itself. The source code does need to be in the correct order based on the used codepage of course.
The input is guaranteed to be non-empty. (An input of one or two characters will always result in a truthy output.)
The input (and your source) can contain multiple of the same characters.
This is code-bowlingcode-challenge, for which the longest answer counting only distinct bytes wins (i.e. if your source code is ABBCabbc1223 your score would be 9 for 123ABCabc).

General rules:

Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
Default Loopholes are forbidden.
If possible, please add a link with a test for your code (i.e. TIO).
Also, adding an explanation for your answer is highly recommended.

Test cases:
Truthy:
~
ab
ba
```
*5a
Test
test
xyzabc
aaabbbccc
aaabbbCCC
AAAbbbccc
msuwy !#),-./0123:;&lt;?@BCFGILMNOQTWX]^_bf
oqqx}}~#$'''*+-./33489=?ABCHLQQQRTW[\]^_abcfgjkklmnno

Falsey:
xzy
C-U
TeSt
tesT
aaaBBBccc
M3&quot;b=J7Uh:kg&amp;F~\p`GLx?9#!%XCOZBv.m_)Y4V*
05AB1E, 10 ... 172 distinct bytes

\]^_abcdefghiijklmnopqrstuvwxyz{|}}}~ƵƵ€Λ‚„…†‡ˆ‰ŠĆĆĆŽƶĀ‘‘’’““””••–—™š›œćŸā¡¢¢¢¤¤¦§¨©ª«¬®¯°±´¶·¸º»¼½½¾¿ÀÁÁÂÃÄÅÇÌÍÐÐÐÐÐÐÑÒÓÔÕÖ×ØÙÚÛÜÝßàáâãäåçèéêëìíîïðñòóôõö÷úü
 -.0123456789;&lt;&gt;@ABCDDDHKKOPQRSTUVWXYZ


Try it online! or validate all test cases (note: the "all test cases" version omits ] and ë, since those don't play well with the header and footer required to run the code repeatedly).

Uses the 05AB1E code page. Validate restricted-source and scoring.

The useful code is just:

Ć            # append the first character of the input to the input
 Ç           # convert to a list of codepoints
  ü-         # pairwise subtraction
    1@       # &gt;= 1?
      D      # duplicate
       O     # sum
        Q    # equal?
         Z   # maximum


The rest amounts to NOOPs.