Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
58
Task/Unicode-strings/BBC-BASIC/unicode-strings.basic
Normal file
58
Task/Unicode-strings/BBC-BASIC/unicode-strings.basic
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
VDU 23,22,640;512;8,16,16,128+8 : REM Select UTF-8 mode
|
||||
*FONT Times New Roman, 20
|
||||
|
||||
PRINT "Arabic:"
|
||||
|
||||
arabic1$ = "هنا مثال يمكنك من الكتابة من اليمين"
|
||||
arabic2$ = "الى اليسار باللغة العربية"
|
||||
|
||||
VDU 23,16,2;0;0;0;13 : REM Select right-to-left printing
|
||||
PRINT FNarabic(arabic1$) ' FNarabic(arabic2$)
|
||||
VDU 23,16,0;0;0;0;13 : REM Select left-to-right printing
|
||||
|
||||
PRINT '"Hebrew:"
|
||||
|
||||
hebrew$ = "זוהי הדגמה של כתיבת טקסט בעברית מימין לשמאל"
|
||||
|
||||
VDU 23,16,2;0;0;0;13 : REM Select right-to-left printing
|
||||
PRINT hebrew$
|
||||
VDU 23,16,0;0;0;0;13 : REM Select left-to-right printing
|
||||
|
||||
END
|
||||
|
||||
REM!Eject
|
||||
DEF FNarabic(A$)
|
||||
LOCAL A%, B%, L%, O%, P%, U%, B$
|
||||
A$ += CHR$0
|
||||
FOR A% = !^A$ TO !^A$+LENA$-1
|
||||
IF ?A%<&80 OR ?A%>=&C0 THEN
|
||||
L% = O% : O% = P% : P% = U%
|
||||
U% = ((?A% AND &3F) << 6) + (A%?1 AND &3F)
|
||||
IF ?A%<&80 U% = 0
|
||||
CASE TRUE OF
|
||||
WHEN U%=&60C OR U%=&61F: U% = 0
|
||||
WHEN U%<&622:
|
||||
WHEN U%<&626: U% = &01+2*(U%-&622)
|
||||
WHEN U%<&628: U% = &09+4*(U%-&626)
|
||||
WHEN U%<&62A: U% = &0F+4*(U%-&628)
|
||||
WHEN U%<&62F: U% = &15+4*(U%-&62A)
|
||||
WHEN U%<&633: U% = &29+2*(U%-&62F)
|
||||
WHEN U%<&63B: U% = &31+4*(U%-&633)
|
||||
WHEN U%<&641:
|
||||
WHEN U%<&648: U% = &51+4*(U%-&641)
|
||||
WHEN U%<&64B: U% = &6D+2*(U%-&648)
|
||||
ENDCASE
|
||||
IF P% IF P%<&80 THEN
|
||||
B% = P%
|
||||
IF O%=&5D IF P%<&5 B% += &74
|
||||
IF O%=&5D IF P%=&7 B% += &72
|
||||
IF O%=&5D IF P%=&D B% += &6E
|
||||
IF B%>P% B$=LEFT$(B$,LENB$-3) : O% = L%
|
||||
IF U% IF P%>7 IF P%<>&D IF P%<>&13 IF P%<>&29 IF P%<>&2B IF P%<>&2D IF P%<>&2F IF P%<>&6D IF P%<>&6F B% += 2
|
||||
IF O% IF O%>7 IF O%<>&D IF O%<>&13 IF O%<>&29 IF O%<>&2B IF O%<>&2D IF O%<>&2F IF O%<>&6D IF O%<>&6F B% += 1
|
||||
B$ = LEFT$(LEFT$(B$))+CHR$&EF+CHR$(&BA+(B%>>6))+CHR$(&80+(B%AND&3F))
|
||||
ENDIF
|
||||
ENDIF
|
||||
B$ += CHR$?A%
|
||||
NEXT
|
||||
= LEFT$(B$)
|
||||
Loading…
Add table
Add a link
Reference in a new issue