OS4 DepotLogo by McFly 
(anonymous IP:,2219) 

   Bug tracker
   Locale browser


   o Audio (343)
   o Datatype (51)
   o Demo (203)
   o Development (600)
   o Document (22)
   o Driver (97)
   o Emulation (148)
   o Game (1005)
   o Graphics (499)
   o Library (116)
   o Network (233)
   o Office (66)
   o Utility (927)
   o Video (69)

Total files: 4379

Full index file
Recent index file



Support the site

 Readme for:  Driver » Input » arabic_console_devicepro2.lha

Arabic console

Description: An arabic console device, line & full-page editors
Download: arabic_console_devicepro2.lha       (TIPS: Use the right click menu if your browser takes you back here all the time)
Size: 3Mb
Version: 3.1Final
Date: 28 Jun 2024
Author: DRIDI
Submitter: DRIDI
Requirements: AmigaOS4 (test on Sam440EP with AOS4.1FEu0 and A1222+ with AOS4.1FEa1222)
Category: driver/input
Replaces: driver/input/arabic_console_devicepro2.lha
License: Other
Distribute: no
Min OS Version: 4.1
FileID: 12984
Comments: 5
Snapshots: 4
Videos: 4
Downloads: 54  (Current version)
2423  (Accumulated)
Votes: 7 (0/0)  (30 days/7 days)

Show comments Show snapshots Show videos Show content Show crashlogs Replace file 
Set up an arabic console device:

Even if graphics/console.device (Text(), ANSI cursor addressing sequence) do not
fully support Right-to-Left fonts.
That is to say, so few documentation in graphics or (disk)font libraries without
R-t-L font example.
Is it right and sufficient to set to negative values: kerning & CharSpace font
attributes? That's what my kufi proposed font does.

Arabic keymaps were added.

For ASCII/ArabSCII hybrid, native RightToLeft mode, launch 'com0x20' program
with the 'arabic_int' keymap and a US keyboard layout.

For LeftToRight and RTL (choose Amiga_1256 keymap and french/arabic keyboard)
launch 'com' program ; and use F10 to change the keyboard from latin to arabic.

Note that there is full support for arabic numerals, only with Amiga_1256 (aka
Win_1256 codepage) and with 8 bits ASMO_449+ (449 plus).

Other mode/codepage are treated from a right arabic margin, due to vowelization.
They could be treated from left latin margin if the algorithm is embedded in an
RTL font engine ; nevertheless ad-hoc vowelization needs a bigger algorithm.

---- In version 1.0 ----

Added a handler for AmigaDOS which DOS name is ARABCON:

I experiment an hypothetical Arabic_C to conventional C language, by mean of
transcoding with a (f)lex translator. That is to code Arabic identifiers in
Uppercase with lowercase "__ar" at the end (so Arabic names are visible and
quick mind-translated from latin) side by side with C library name space.
This is planned for future ; so only a .pdf is provided.

I also experiment "Lisp small language ambitus Arabic compatibility" with the
minimal Lisp implementation from Andru Luvisi.

Eventually, added a slightly customized 'ed' line-editor.

---- version 1.1 ----

Enabled multitasking (polling loop replaced by waiting state).

---- version 1.2 & 1.21 & 1.22 ----

o Better integration of ARABCON:

o Better concurrency due to adapted priority for each of the two internal tasks.

---- version 1.3 & 1.31 & 1.32 ----

Strongly enhance the editor, like the 's'ubstitute command, for arabic.

Use from CLI "mount arabcon: from mountlista" ,
then launch the "eda" (program envelope that launches the actual 'ed') being in
the "Editor/ed/" directory and verify that a /tmp directory above exists i.e :

If you want to write your own envelope for 'ed', look at mlispa.c in the

(version 1.31) correct the operating of final letter (latin extended, capital)
to char-class i.e [[:z:]] , in the pattern part of the substitute command i.e

For instance with the 's//' command, you can load an ASCII file and try
"araberize" to actual Arabic words (following ArabSCII full 8-bit code table).

In regular expression /pattern/, char-class are automatically entered when a
"capital" (ASCII extended) letter is encountered or encountered at the beginning
of a word(-pattern) ; use Alt- key pressed.

(version 1.32) enhance char-class, correct a bug when searching for word like
"salamalakoum" due to a miss behavior of 0xC0 to a forgotten instruction.

It is advised to consider lam+alif as an unbreakable bloc in regular expression

---- version 1.4 & 1.41 & 1.42 ----

o Basic support for tabulation and line numbering ;
  Tabs can be set by environment variable as "setenv tabstop=8" (the default).

o Bug in search for lam+alif removed.

Now you can use ed commands 'g'lobal search with 'n'umbering : g/re/n or g/RE/n 
The last with RegularExpression /pattern/ in extended ASCII "Capital" not only
matches all forms of a letter but vowels too, if present.

Also use ",n" instead of ",p" ed command if you like.

(version 1.41) add an experimental pretty-printer for arabic.
No modification to the text in memory is done, and for now the justification is
only displayed.
The dimension of the page can be set by the environment variable as "setenv
gauge=10" following the use of ",p" lower case commands.
Also, the big ",P" command starts pretty printing with a page dimension
according to the length of the first line displayed.
"0p" is used to stop pretty printing.

(version 1.42)
a) tabular form of pretty printing a bit corrected.

b) Try to display ASCII (with 'eda' program editor for instance) in a
Left-to-Right readable manner, when in Arabic RTL only mode.
That is decoding ASCII from word (only, no Extended-(A)SCII which are so to say
finals in Arabics) when escaped from Arabic stream.
For examples :
echo "ac" >arabcon:  is in ASCII                   (displayed LTR when escaped)
echo "aã" >arabcon:  is in ArabSCII=Arabic_ASCII   (displayed RTL,means
echo "ãa" >arabcon:  is neither ASCII nor ArabSCII (displayed RTL for
debugging purpose also when escaped)

c) Minors corrections :
- Bug on 'ed' global search command for : g/hamza_alone which appeared
alif-hamza, corrected ;
- lam+alif(es) no more stretched by the pretty-printer ;
- bug on g/#x corrected ('#' means Alt-Shift-# and is the arabic soft-hyphen) ;
- '_' tatweel after and no more before a letter on regular exp. pattern (re.c) ;
- To change one letter inside a word use the ed substitute command :
s/a-zA-Z/a-zA-Z/ with ASCII typesetted.

---- version 1.5 & 1.51 & 1.52 & 1.524 & 1.53 & 1.54 & 1.541 & 1.55 & 1.56 &
1.561 & 1.562 & 1.563 & 1.564 & 1.57 ----

Add a unix-like 'cat' filter, for full 8-bit arabic encoding, named 'cata' ;
Beware that the output is arabic, line by line, peek&pokes appropriate letter ;
Now (version 1.51) it "by-passes" ASCII and processes only ArabSCII words.

It is used to automate "araberization" and "strict conformation" of arab file.

For instance after modification with 'ed' editor and some substitute s/x/y
command(s), if you want to be in strict conformation, follow this two steps
(output1.txt is a file, arabsciiOut.txt another file) :
>W T:output1.txt
>e !cata <T:output1.txt
or run "!cata <output1.txt >arabsciiOut.txt" and "e arabsciiOut.txt" in 3 steps.

To display changed values in memory use ",l" command editing instead of ",p".

Nevertheless, it is advised to change a whole word when editing arabic with
ARABCON: because this version uses 0x20 hybrid full 8-bit arabic only mode.

When launching 'cata' program, a default screen and window will appear shortly
because the underlying 'arabicconsole.device' needs a window.

The system console lacks copy/paste but it multitasks fully ;
also the ARABCON: DOS console lacks multi-session windows management.

(version 1.51)
Now it is easy to replace letter(s) inside a word, when in Arabic : s using
soft-hyphenation code, by entering Alt-Shift-# on a US keyboard layout.

(version 1.52)
1. correct a bug on seizing of indecise-final (alif, da, dha, ra, za) letters ;
2. an initial, mid, final or isolated letter X, on the replacement part s/re/X
of the substitute command of 'ed'(eda) can be used without worrying about
soft-hyphenation code entered (0xAD erased, Alt-Shift-# must be in the middle to
get itself) ;
3. the s// substitute command can (now) use ArabSCII/ASCII or ASCII/ArabSCII
replacement forms : s/ or /s (use Escape twice to get itself) instead of s// ;
4. integration of 'cata' arabic filter program when saving 'w' with the 'ed'
editor ('cata' must be in the same directory as 'ed' ; look at "scmd" in main.c)

(version 1.524) follows 1.52 point four
o Reintegration or unfolding of the ad-hoc vowelized hamza with proper support
_algorithm_ into the put_stream_line() function of the 'io.c' module ;
o A Certification of this code is in progress...
o In theory (mine), there should be no more difference with the 'cata' filter
program, in the hamza letters, than the difference between an hamza letter
(0x41, 0xB4, 0xBA etc) and always, an hamza without support (0xA6) ;
o Use "we file" ed command to chain a 'w' with an 'e' commands ;
o Use "w0" to stay with the original write to file command of ed.

(version 1.53)
Actually unfolding the (full) Arabic algorithm (see note version 1.524 above).
If you reuse my work, don't forget to end the final letter of an ArabSCII word,
before passing it to the algorithm (see paragraph "be" of version 1.42).

(version 1.54)
Unleashing Arabic-C_to_C language frontal program from "a2cfront-excerpt-l.pdf".
'a2cfront' frontal is in the C_language directory as hello.ca .C_Arabic files.
For instance, transcode hello4.ca by running : a2cfront <hello4.ca >hello4.c ;
Compile hello4.c by : gcc -ohello4 hello4.c ;
Run "hello4 >arabcon:" (don't forget to "mount arabcon: from mountlista" before)

To display a C_Arabic .ca file, you can only use the 'ed(a)' editor.
C files (.c) are regular ones excepted for arabic string which are ExtendedSCII.

(version 1.541)
'arabscii' displays the ArabSCII table, 8bits full and 7bits at the bottom ;

If you modified the source-code 'ac.ca', with 'ed(a)', follow the two steps :
i.  a2cfront <ac.ca >ac.c
ii. gcc -oarabscii ac.c

Use "arabscii >arabcon:"  or  "!:arabscii" inside the ed-arabic editor.

(version 1.55)
o Arabic algorithm enhanced with finals (see 'io.c' file of the .lha archive) ;
o Arabic-C keywords added to 'a2cfront' ; see diff. between 'ac.ca'/'aca.ca' ;
o No semantic change to arabcon:

(version 1.56)
o lam in 'aca.ca' changed to lam+soft-hyphen also backspace redefined to start ;
o Escape(Alt-/) of double quote added and ha letter allowed in string(a2cfront);
o Fatha/dhamma/kasra on alif bended (0xA7 ; 0xAA) policies updated (io.c, dev) ;
o Finally, a new directory 'a2pr' for "ArabicToPrinter" contains a flex filter
to reverse numbers and, almost ASCII, words when those in escape sequence.
  This is for MultiView when Right-To-Left system font support becomes a reality
  (wondering how the engine of printer works for Arabic when in character mode).

(version 1.561) -- Bugs correction
arabicconsole.device (no source-code) - tanwin input, chadda begins long vowel ;

io.c[contains the source-code for a scientific approach to the Arabic algorithm]
- chadda on the beginning of long vowel, to be coherent with arabic device above
- alif-hamza when 0xAD instead of wa-hamze with vowel on 'iqra#'oun functionnal
- error on wa that infers current fatha vowel erased (previous == 0x5D .. 0xFD)
- miss of simple lam-alif (one of the four bended) as a long vowel added(0xC0)
- chaioun (thing) with sukun on ya mandatory to end with a hamza without support
- alif-maqsoura policy restricted (actually near ya if not at the end of a word)
- alif-bended(all lam-alif) added to final when ended by hamza w/ support(0xA6);

a2cfront[ArabicToCfront] (no source-code) - quote (' = Alt-/ ') can be escaped;

a2pr[printing] - 'd'(~) and 'D'(^) added (no change implied), n reinits Escape.

(version 1.562) -- Rectification of decision taken in bugs correction above
arabicconsole.device, io.c - chadda with no vowel allows to start a long vowel ;

a2pr[ArabicToPrint] - rework to better reverse ASCII words(if escaped)& numbers.
  (for future printing and "basic" viewing with MultiView AmigaOS tool)

(version 1.563)
arabicconsole.device, io.c - chadda with no vowel on wa-hamza is as an implicit.

(version 1.564) -- minor corrections & possible bug removed
  In io.c (full Arabic with ad-hoc vowelization algorithm -- rigorous approach):
- policy on alif-bended-hamze with chadda alone corrected (0xAA chadda as 0xAA);
- policy on alif-hamza-kasra with chadda alone corrected (0xB9 chadda as 0xB9) ;
- wa-hamze at the end with a final with sukun before no longer unchanged (tied);
  (these two, below at '+', are given as binaries only, no source-code)
+ In arabcon-handler : display of debugging (latin letters below) when vowel ON;
  (arabicconsole.device implements an Arabic algorithm but an handcrafted one)
+ In arabicconsole.device : poking at 0xbfe001 (power led blinking) removed.

(version 1.57) FinalEdition release
  arabicconsole.device : internal changes so that internal CMD_WRITE be the same

  ARABCON: (arabcon-handler, no source-code given)
- possible DOS guru 0x07000004 (Unexpected packet received) normally deleted ;
- increase priority to the task which communicates with (arabic)console.device ;
  Thus, the arabic editor 'eda' works fully with AmigaOS_FinalEdition(Update 0).

---- version 1.6 & 1.61 & 1.62 & 1.63 & 1.64 & 1.65 & 1.66 & 1.67 & 1.68 & 1.69
& 1.691 & 1.692 & 1.693 & 1.694 & 1.695 & 1.696 & 1.697 & 1.698 & 1.699 & 1.699a
& 1.699b & 1.699c & 1.699d & 1.699e & 1.699f & 1.699g ----

Add a full-page editor called STeVia for "STevie for Arabics" in "stevie/src" :

1. Update your 'arabicconsole.device'(v1.699), put the updated one in devs: and,
2. Update your 'arabcon-handler' in L directory to mount, before running steviA;
3. If versions 1.61-699 : update 'stevie' program too(not stevia envelope only).

Remarks about this full-page editor :

o Use Ctrl-U(p) Ctrl-D(own) and PageUp/PageDown instead of maintaining cursor
down continuously, to quickly browse a multi-page file ;

o I'm not an AmigaDOS Guru or Expert and my implementation of raw (versus
cooked) mode is an handcrafted one, but I've experienced that the display is
slower with AOS4.1FEu0 than with the AOS4.1 without update (perhaps
console.device writes are a bit faster but multitasking seems to be affected by
interleaved read/write operations when continuously cursor (press) down at
page/screen boundaries).
Also, input events queue? of AOS4.1FEu0 seems too big, or continues to queue
keyboard events even if a Key-Up event is supposed to be received (vanilla mode?

(version 1.61) -- eda bug on termination removal ; proper search '/' for STeViA.

(version 1.62) -- For search '/','?' use Alt- key combined to end an Arabic word
(no regexp with this version of "STevie for Arabics" but "plain" search as usual
with ArabSCII), bug on cursor displayed in the bottom window/status bar removed,
and, no more glitches when cursor press down continuously at screen boundaries.

(version 1.63) -- No more (visual) jitters with AOS4.1u0 thanks to serialized
I/O, dealing with long lines with the full-page editor STeVia is better, 0xAD
(hyphenation) only at the beginning of search '/','?' (so 0xAD is available
inside words).

(version 1.64) -- Display downwards now, one line at a time, even if long-lines
(start/stop perfect under AOS4.1u0, investigation is needed under AOS4.1FEu0),
lost cursor at the bottom when input on a blank page, fixed.

(version 1.65) -- Input in the middle of a file, optimized (in quasi-constant
time for arabic word insertion), search '/' or '?' followed by ESC for ASCII
word, improved.

(version 1.66) -- slightly change in the initial part of the Arabic algo for
0xBC|0xBD to be 0xBB instead of 0xBD; outside of the algo, alif-hamze 0x61|E1 is
transformed in hamza without support (0xA6) when at end of word; bug on
insertion-optimization fixed (caused vowelization of the hamza support not to
stay); better multi-line support; 'A'ppend (shift-A) command editor added.

(version 1.67)
1. bug in strRchr() (my version of strrchr() found at the end of main.c) fixed ;
2. deleting a char now ends a word if necessary (done in delchar() for 'x', bs);
3. a more proper line delete (display garbage on 'dd' command removed) ;
4. tackling the cursor vanishing problem (totally resolved in v1.68) ;
5. drastic speed-up optimization on multi-line insertion.

(version 1.68) -- a regression for multi-line at top dropped, Arabic algorithm
in edit.c and in cmdline.c (2 lines commented on curVoyImp at the beginning) so
to be the same (excepted alif-maqsura-kasra final as usual),  multi-line support
is better again, 'tabstop' environment variable supported.

(version 1.69) -- bad coded instruction could cause a bug with a full vowel
multi-line ; insertion of a non-letter in an arabic word ends words at the two
new boundaries ; the Arabic algorithm is now called when deleting, in delchar().

(version 1.691) -- primarily bugs correction
o if internal cursor (Curschar) overflows (== Fileend) words were not ended ;
o internal reinit. of long_vowel was not done correctly in the Arabic algorithm;
o better support of lam+alif-hamze(0xA7) to operate like other alif-hamze(0x41);
o singleton-word append to other when deleting, needs two calls to the (Arabic)
Algo() function: one for opening the single-letter and one to do append really.

(version 1.692) -- continues singleton (last point of 1.691)
[1.691] continues append with the indecise letters (alif, wa, da, dha, ra, za,
alif-hamze/madde) to poke the end of a word with an alif-hamze(0xE1) instead of
an hamza alone(0xA6) at the end, because we cannot "reopen" an indecise (initial
or isolated) and instead we choose to parse all the word-letters and do the most
inner appropriate modifications.
[1.692] correct input hamza alone when at the beginning of a line (source-code
is just above the last point one, and also at the outside of the Arabic-algo
when transforming an alif-hamze to an hamza alone).

(version 1.693) -- fever falls down !
a) simplify double_hamza_alones of singleton, starting at point 1.691 to 1.692 ;
b) suppress a bug when we delete all lines (dd) followed by deleting a char (x);
c) calling algo() function at better place and ASCII detection reinit when 'n'.

(version 1.694)
- vowel at start on alif did not transform it to hamza alone ;
- lam+alif-hamze-kasra alone now tied ;
- 0xA0 et 0x1F when keystroke on Shift+Letter, functionnal ;
- bug on Shift-D command (partial delete until the end of the line) fixed.

(version 1.695)
- Minor regression on alif-madde initial when searching alone ('/') dropped ;
- bug removed in the algorithm when arabic word starts with tatweel, was
transformed to 0x7F (arabic algorithm of 'io.c' of ed(a) modified accordingly).

(version 1.696) -- an indecise (alif, da, dhal, ra, za, wa), initial or medial
in an arabic word, now (with the full page editor) becomes an indecise isolated
or ended when a blank (a non-letter) is inserted after.

(version 1.697) -- all this points concern STeVia, as usual for 1.6xx
1. Alif-hamza re-allows (0xC1 instead of 0xA6) at the end of an arabic word when
input in "Capital" (CAPSLOCK or Alt-Letter entered). Note that a primitive
arabic algorithm, a common one, with which you can enter hamza alone everywhere
in a word and thus insensitive for hamza-letters to vowel is used then ;
2. Because we have limited complexity for SYN with only one previous, no vowels
too, for the STeVia editor, 0xA6 is not permitted to be a previous when syncing;
3. Parasiting vowel at the beginning, below the current line is eliminated.

(version 1.698)
- The display is now proper using backspace when deleting at the end of line ;
- Bug fixed for 'r'ead command when the buffer is empty.

(version 1.699)
1. The display is ok using backspace even when deleting initial input with 'n';
2. With the STeVia editor (raw mode is set), the correct form of letter is only
due to the algo() of the full-page editor. The arabicconsole.device do not
interfers (choose the appropriate form) anymore, thanks to an idle mode (0x27) ;
3. The ":wa" command editor(s) writes arabic even if a word is not terminated
with an arabic final (ascii protected by 0x1B is not affected) ;
4. Management of the hamza alone starting an arabic word followed by an alif in
"Capital" (0xA6 0xC2) enhanced. Try to input with CAPSLOCK on.

Arabic console uses a "common" algorithm (hamza, not sensitive to context and
vowel) when input/encoding starts with a final form ; or input with CAPSLOCK on.

(version 1.699a) -- point four of 1.699 [4.](0xA6 0xC2) introduces a regression:
corrected ; hamza alone (0xA6) inside an arabic word was not correctly handled.

(version 1.699b) -- bugs correction
- There was a bug if the second letter of an arabic word was vowelized and the
first letter was hamza alone (0xA6 vowel 0xXX) : it remains 0xA6 and that's what
we want, only for the starting of 0xA6 0xC2 "Capital sequence" which is never to
be vowelized ;
- Backspace on the first input frame, remains an initial letter left: not ended;
- Deleting ascii (inside 0x1B .. 0x1B) is better (this time do not ends letter).

(version 1.699c) -- policy of alif-hamze-kasra (alif (i) at beginning) reviewed.

(version 1.699d) -- 2 minor bugs in the algo with alif-maqsura(0xDF|0xFF) fixed.

(version 1.699e) -- minor corrections in the algo
- alif-hamze(-kasra) after lam at the end of line, won't stay 0xB8 (if entered
alone by Alt-';') or tied again as 0xAA ;
- a Capital arabic word (mainly 0xC0-0xDF) when only at the beginning, is
prevented to restart in the middle of this word, if all letters aren't Capitals;
- hamza alone or wa-hamze at the end, instead of alif-hamza, for word like
"Vice", "Vices".

(version 1.699f) -- bug on hamza alone/alif-hamza after multiple long vowels in
the same arabic word, removed.

(version 1.699g) -- input of vowel(s) at the end of line enhanced ; hamza alone
after alif-madde, supported.

(version 1.699g1) -- input of vowel at the beginning in reverse video, too.

(version 1.699g2) -- input of vowel at the beginning in reverse video : a clean
(in edit.c) and better solution (it was not mandatory but
devs/arabicconsole.device with only a 0x16 byte (SYNc alone) works correctly in
regard to not, even, displaying the cursor).

(version 1.699g3) -- better, if not total support for vowelization in the public
arabic algorithm (STeVia) where orthographic rules attempted to replace
comparisons followed by adjustements on peculiar cases (when several hamzas
follow each other) ; for an handcrafted algorithm use ed(a) line-editor instead.

(version 1.699g31) -- bug fixes of version 1699g3
o bad support for the final hamza on multiple & contiguous hamzas, corrected ;
o enhancements of the default support on the last hamza.

(version 1.699g32) -- bug fixes of version 1699g3 (continuation)
  improvement  of the default support on the last hamza : wa-hamze with fatha
above with a before-last letter with sukun, now yields hamza alone.

(version 1.699g33) -- bug fixes of version 1699g3 (continuation)
o optimization : scanning only the changed line in insert mode ;
o systematic closure in front of 0x1F (implies better robustness from keyboard);

o better behavior of 2 letters arabic-word, ending with an hamza alone.

(version 1.699g331)
- finalized behavior of 2 letters arabic-word, ending with an hamza ;
- deleting inside, ends the previous if it's the final letter of an arabic-word.

(version 1.699g332) -- regression on 'w'rite command for eda (io.c) fixed.

(version 1.699h) -- beginning support for ASCII editing inside ArabSCII; use
Ctrl-w to enter an ESCape in STeVia. Text after ESC means ASCII and is reversed.

(version 1.699i) -- always applies to STeVia editor
o In edit.c (source-code of) ASCII management has been improved and cleaned ;
o insert mode is still active after cursor key movements, thus input is easier ;
o appending at the end of line is now done with the |End| key too (Shift-A cmd).

(version 1.699j) -- the delete key keeps us in insert mode too ;
Also, one can use the classical one letter command in this mode if he prefers ;
Eventually, a sneaky bug on letters which remained isolated? just after the
second ESC (0x1B..0x1B) of an ASCII sequence is wiped out.

(version 1.699k) -- concerns arabicconsole.device (minor bug) and STeVia editor
o bug on 'A' ASCII and CAPSLOCK On giving 0xC1 with arabicconsole.device fixed ;
o Rework of STeVia search ('/') and cleanup of its cmdline.c source-code.

(version 1.699l) -- on search ('/') better display for incomplete word ; when
entering 0xAD at the beginning for instance.

(version 1.699m) -- best arabic basic search ('/') for STeVia without Regular
Expression (arabic RE as defined in eda line editor using "Capitals" 0xC0-0xDF).
Hyphenation (0xAD), Alt-Shift-# on US keyboard layout, is only suppress at the
beginning of a search (just after '/' or '?') and this permits writing of word
like qara'oun with an alif-hamza ( ' entered thanks to hyphenation code 0xAD )
instead of the default wa-hamze to be distinguished for both special 0xAD_vowel
or vowel_0xAD sequences in qara'oun word.
Otherwise, 'iqra'oun could either be entered with CAPSLOCK on : "in Capitals".

(version 1.699n) -- minor correction (to be coherent with 1.699m above) to allow
a right display for 0xAD_vowel inside tied letters all along with vowel_0xAD

(version 1.699o) -- delete key always suppress a vowel if present. 0xAD
(Alt-Shift-# on US keyboard) is used to enter one of the four forms of a letter.

(version 1.699p) -- almost no more flashing _cursor phantom_ appears on column
zero when moving it (update arabicconsole.device also).

(version 1.699q) -- correction of wicked display regression introduced by cursor
phantom management : no more flashing ever (update arabicconsole.device again) ;
ASCII "reverse management" on append simplified (mainly a comment in edit.c).

(version 1.699r) -- tildes meaning no more line, vanish when hit by carriage
return (almost, not perfect but was necessary) and PageUp key now works better.

(version 1.699s) -- tildes when present at the bottom are manage in the same
manner as what is left-over down the cursor on a carriage return ('r' edit.c);
A bug into the algo about ASCII becoming uppercase, fixed.

(version 1.699s2) -- Some bugs "fixed" including the one above.

(version 1.699t) -- fixes and improvements
o inserting ASCII(numeral or letter) at the head of another ASCII is completed ;
o suppress behavior enhanced with exponent in string like floating point number;
o alif-maqsoura to "ya" following alif-hamze(-kasra: 0xB8|9) support(cmdline.c).

(version 1.699u) -- mainly patches
- floating point number in ASCII(for basename)is allowed (but display confused);
- idle vowel (0x80: graphically ... above) is permitted for long vowel (&hamza);
- 'arabicconsole.device' updated for ASCII not reversed just following Capitals;
- the sneaky bug of version 1.699j seems so complicated to be wiped out totally;
- ArabicToClanguageFrontend: a2cfront for Java keywords added, source now given!

(version 1.699v) -- sneaky bug (see above) wiped out.

(version 1.699w) 
- Amiga(MS)_1256 &ecirc; french letter swap into j fixed + hamza alone following
- fathatan on a letter before alif maqsoura permitted (slightly algo fixes).

(version 1.699x) -- OBSOLETE - see version 1.699y --
Cursor remained at one end when switching with LTR/RTL(253/254) on Amiga_1256.
Try this with 'com' program and hit F10 following ALT-W / ALT-SHIFT-W.


ARABCON: DOS (arabcon-)handler supports hybrid 8bits extended Arabic(ArabSCII)
encoding, and eda/STeVia editors were araberized accordingly.
Instead, one can write another CON: so that it supports Arabic 8bits codepage
MS_1256/ASMO_449/ISO-8859-6, but it needs to unfold form letters in font engine?

(version 1.699y)
o Alif maqsoura at the end following a long vowel and vowelized itself now ok ;
o Better support for Amiga(MS)_1256 (automatic insertion of LTR and RTL marks) :
  Use F10 function key to change from french AZERTY to ARABIC keymap.
  Use Shift-F10/Shift-F9 to retrieve the edges : right or left (this behavior is
not implemented in MS_1256 codepage, see UNICODE also).

Remember to use 'eda' and 'STeVia' editors with a US layout keyboard and with 
the default 'arabic_int'(ernational) keymap.

The DOS handler ARABCON: do not support Win_1256/ASMO_449/ISO-8859-6 codepage,
they are supported only with the device 'arabicconsole.device'.

(version 1.699y2) -- full support of arabic numerals for Amiga_1256 (however
there is no room in the ArabSCII table for farsi/urdu letters, so Amiga_1256).
You can test it with 'com' program (for full explanation see at top of release).

Amiga_1256 is a stronger mode for french/arabic language and bidi marks support.
One can choose it for a future ARABCON: (arabcon-handler) DOS console handler.
Personally, I like hybrid mode 0x20 which what is needed for great Arab editing.

(version 1.699z1) -- arabicconsole.device update (test with com, com0x20)
Acceptable word break and line continuation when input is done in the opposite
direction (F10 or ESC for com0x20) of the default margin (SHIFT-F9/SHIFT-F10),
for both Amiga_1256 (0x06) and hybrid (0x20 : hybrid cooked) modes.
Line editor and test program (com, com0x20) will work with this feature because
they operate in cooked/buffered input mode, but not the STeVia full-page editor
which runs in immediate mode (0x20 becomes 0x27 when setted by DOS call to raw).

(version 1.699z2)
- minor change in arabicconsole.device (a "kcur == 0" was missing for sensing);
- rework of a2pr, checking a2pr output with a reverse pr2a(vowel before/after);
- octal feature (010 <=> backspace <=> 0x08) authorized in ed(a) line-editor:
  possible confusion at end with 1 2 recall .. of grouping ( ( for 122 as 1"22"
instead of octal 122 ! But using a tough octal feature is a must for ed.

(version 1.699z3) -- update arabicconsole.device
- when input F10 (keyboard swap french <=> arabic) a bidi mark is inserted
(Amiga_1256) so that there is no more the need to go back to insert a blank ' ';
- to print to codepage IBM864 teletype?/typewriter, a filter 'pr864' to process
from ArabSCII to IBM864 mode is added ; can't filter graphic char (ArabSCII).

(version 1.699z4) -- updates: arabicconsole, 'com' test program (french-arabic)
- keep out bidi markup from being reversed, fixes blank insertion see 1.699z3 ;
- improvements of Amiga_1256 (both updates) to figure out french accents:
'&eacute;' ;
- 'pr864' (ArabSCII to 864) minor change : madda initial&alone is 0xC2 not 0xA2.

(version 1.699z5) -- updates: arabicconsole.device, eda & STeVia editors
Try to keep ArabSCII intact in eda or STeVia editors when ESCape several times:
meaning ArabSCII to ASCII to ArabSCII ... do not change the ArabSCII text.

(version 1.699z6) -- updates: arabicconsole.device, a2pr/a2pr printing filter
- minor modification in arabicconsole.device to display (again) final character
when in "raw mode" (0x27), as used in STeVia editor ;
- fixes a2pr=ArabSCIItoPRinter for previous init and algoDump() indecise letter;
+ added two small utilities in 'telecom'munication directory (a27 and 72a) for:
  ArabSCIIto7bit and 7bitToArabSCII (8 to 7 bits "compression" and 7 to 8 bits);
  showing that A(rab)SCII also goes through a 7 bits transmission line, clearly.

(version 1.699z7) -- rework of telecommunication utilities and manual

(version 1.699z71) -- updates: arabicconsole.device, a2pr/a2pr, telecom/72a
Fixes into algoDump() for ta' marbouta with tatweel/kashida "&auml;_" that
follows, which means hexa "0x" introducer of C_ArabSCII to C_ASCII programming

Summary of arabic scripting algorithm used in programs:
ArabicConsole.device : big algo (handcrafted) and dump algo for "Arabic capital"
ed(a) : big algo (handcrafted one of arabicconsole + rigorous for io.c saving);
STeVia: big algo (rigorous/rules based, appears in edit.c + cmdline.c saving) ;
a2pr  : none-algo on 8bits ArabSCII input but dump algo for "Arabic capitals" ;
72a   : dump algo on 7bits ArabSCII input. The whole is taken but not verified.

Big algo means vowels and hamza supports are considered.
Dump in fact means dumb, minimum algorithm with no vowelization context support.
Arabic capital 0xC0-0xDF, 0xB2, 0xB6, 0xB9, 0xBC, 0xA6| is the classic alphabet.
This means that there's both an extended and a classical approach with ArabSCII.
Source code is closed for arabicconsole.device (and arabcon-handler) else given.

(version 1.699z72) -- updates in: arabicconsole, a2pr, telecom, EDitor, stevie.
Fixes ta' marbouta inputs coherency ; 0xC0 instead of alif in big algo editors.

(version 1.699z731) -- updates: arabicconsole.device, ed(a), STeVia.
Fixes: 0xC0 processing array out of bound + 0xC0 (ALT-SHIFT-[2|()] in US
keyboard layout) input only when CAPSLOCK On, for "tatweel ArabSCII Capitals" ;
instead of SHIFT-[-|_] 0x5F for normal/extended ArabSCII.
Note that 0x5F (normal tatweel) is not an extended letter (>128) and do not
close an Arabic word. So another letter is needed to close word and tie letters.

(version 1.699z74) -- updates: arabicconsole, ed(a), STeVia, a2pr, a27, 72a.
- Buggy cursor display removed in arabicconsole when starting with 0x8X;0xAD ;
- Add a stronger test for 0xC0 following 0xB9 (! 0xAD) for big algo in editors ;
- Fixing of previous for 0xAD in a2pr ; dump algo modified a little even in 72a.

(version 1.699z75) -- updates: arabicconsole.device(no source-code), com.
- minor update to dump algo (CAPITALS 0xC0-DF) embedded in arabicconsole.device;
- update of LTR, RTL mark-up insertion in test program com(com.c) for Amiga1256.

(version 1.699z8) -- updates: l/arabcon-hander, l/mountlista, stevie/, Editor/ed
Add a second handler in the l/mountlista whose DOS name is ARABCON2: so one can
launch the two editors STeVia and eda(2) in parallel. So there's an eda2 whose
envelope redirects in/out to ARABCON2: instead of ARABCON: (with 2 at end).
A typical setup is :
 mount arabcon:  from mountlista
 mount arabcon2: from mountlista
 run eda2    (and not run eda)
 run stevia
arabcon-handler has been updated to partially support multiple instances but do
not multitasks as arabiconsole.device do ; called reentrancy.

Now, we can plan a typical C_compilation sessions from the line editor (eda2) :
>!gcc -oabc abc.c *> err
>!type err (to see ArabSCII/ASCII errors from file 'err')
>!pa < err (to see ASCII only, 'pa' is in a2pr directory)
>r !pa < err (to put the whole list of error in the Ed buffer)
>,p (and print, manage them)
Thus using the full-page STeVia for source-code editing, here "abc.c" in another
"Arabe : Normal" screen.

Remark : the system() call of 'ed' line-editor do not support the pipe '|' tips.

(version 1.699z81) -- updates: Editor/ed (separate octal by 0x1F see io.c) and,
Enhance versions of a2c_front (Arabic[_C] to C) and pa (Print __AR[ab] word):
An example (session in ed line-editor second screen launched by "scriptEd") is:
>!copy ram:C_language/hello4.ca h4.ca  [dont't forget the pling/bang at start]
>!a2c < h4.ca > h.c  [run the front-end on arab source-code to conventional C]
>e !pa < h.c         [just to see the content of h(ello).c]
>...                 [if you want compile by: >!gcc -o hello h.c *> err]
Should print the word ending with "__ar" (TOTO) in Arab and the rest in ASCII.
So, a C_litteral_string, in double quote, even if it contains arab is not
displayed in arabic. ESCapes are dropped by 'a2c'front and lost.
There is no more ESC code around a string but inside only.
Normally, it serves to manage compiler errors on C_identifier and not to display
"All Arabics". If you want to see arabic use the original source-code: hello4.ca
(just copied as h4.ca in your local directory ; note with .ca extension) which
contains whole ESC codes, and edit the .ca file inside the line or the full-page
editors: eda (>e h4.ca) or STeVia (:e h4.ca).

(version 1.699z9) -- minor updates: arabicconsole.device, editor/ed, stevie/src
In [handcrafted] big algorithm(line-EDitor, com both used arabicconsole.device):
- The arab word "light" : Dhaou' with a sukun on ou(w) terminated by a hamza
alone: ' and vowelized 'a 'i 'ou, prevent the hamza, with vowels 'i or 'ou, to
be an hamza alone. Strictly not a wrong support but none is nicer ; just 'a was
In [rigorous/rules based] big algorithm (STeVia) :
- A vowelized chadda on an alif-hamze missed the right support. And
consequently, the same case as [handcrafted] above for an hamza, alone, arose.

(version 1.699z91) -- alif maqsoura regression dropped from [rigorous] big algo:
editor/ed (io.c), stevie/src (edit.c / cmdline.c).
Again reenabling alif maqsoura with a chadda-sukun above (other vowels: chadda,
chadda-fatha, chadda-dhamma and chadda-kasra were ok) with a kasra vowel on the
previous letter.
For instance "on+y(a)"/3Aliyy[&deg;] with yy standing for alif maqsoura with
Don't forget kasra on lam (li), which means first alif maqsoura as a long vowel.
So, there's no need to replace alif maqsoura by ya, in this case, because alif
maqsoura is part of a long vowel li_y or lii long phonetically.
Kasra vowel is mandatory to signal that it's an inner alif maqsoura.

Case of hamza alone after alif maqsoura:
Note that orthographically, you will find the infinitiv for the verb "to come"
as jaa' with (aa)alif to be followed by (') hamza alone and as jii' for the root
"come" with (ii)ya inside, and not (y) alif maqsoura whereas it should be!
Since ya is linkable, and changes its form from final to medial or initial
(0x5E;0x7E;0xDE;0xFE), not (y) alif maqsoura (0xDF;0xFF only finals, no medial),
the hamza alone should be changed as {y'} hamza_on_alif_maqsoura ; i.e. jii{y'}.
The existancy of alif maqsoura is to ensure readibility, ending the word with an
hamza alone after the alif maqsoura jy' in this case (y) equivalent to (ii)ya.
Note that: jaa', jii' or jii{y'} and jy' have all, strictly, three letters.
Also when alif maqsoura is actually ending a word, it should be read as an alif.

Remark: alternative input with Capitals 0xC0-0xDF (input with CAPSLOCK on) could
be used ; but loosing ad-hoc vowelization i.e. choosing the right support for
all hamzes in the word. There's also the need to conjugate verbs by programming.

(version 1.699z92) -- minor update to PrintArabic (C_language_identifiers ending
with "__ar"): a2pr/pa.l where 0x1F was replaced by the equivalent 037 octal.

A script to be placed in S: named "scriptEd" prepares in RAM: and launches the
two editors in parallel (use ALT-N/ALT-M keys to navigate between screens) with
ed(a) line-editing used as a primitive arab CLI(=CommandLineInterface) due to
its internal system() command possibility (commands beginning with pling [!]).
If you extract all files from the archive to the RAM: you could change the shell
variable at the beginning from "set WorkDir=Travail" to "set WorkDir=RAM".

(version 1.699z93) -- 'gca' for "gcc-arabic" script added.
(version 1.699z94) -- algorithm enhanced (big-algo: rules based) STeVia (edit.c)
Delete and after replace your devs:arabicconsole.device due to its lower size ;
ArabicToSevenBits (a27.c) optimized for data communication ;
Bugs in normal.c fixed (crashing the STeVia editor or freezing it in loops).

(version 1.699z95) -- regression trashing ASCII when at end of ArabSCII removed.

(version 1.699z952) -- better (if not perfect) inter-mangling of ASCII/ArabSCII.

(version 1.699z953) -- ESC insert OK(you have to assign F12 FKey to <CONTROL w>)

(version 1.699z954) -- correction about ESC surrounding A6
The ultimate goal of using ESC to be followed by '[' (0xA8 transformed into '['
ASCII) followed by controls is to colorize the ArabSCII words. So, A6 has to be
input "manually" with Alt-Shift-& (ampersand) at the end of an ArabSCII word
when ESC surrounding and no verification is made possible.
Normally, the text is pretty print all along with colorizing rules to the
terminal console, so no one seized himself color controls excepted, perhaps, for
setup/configuration file.

(version 1.699z955) -- fixes and provisioning
o Bug fix on ESC and 0xA6, bad display in dhamma vowel, with a one2letter word ;
o Provisions on ESC with Capitals done in arabicconsole.device (no source-code
given) :

*** Input Capitals 0xC0-0xDF(0xB9|0xBC|0xB2|0xB6) with CAPSLOCK on, is
Else "conflict" between arabicconsole.device and big-algo[rules based] taking
hand, may arised, (re-)starting inside, on an initial (input).
0x1B-0x1B could begin an ArabSCII word, so it is not feasible to test for it at
the beginning in big-algo ('debut' of Arabscii).
*** Afterwords, if you enter Capitals (0xC0-0xDF..), it is to be supposed for an
exception ArabSCII word.

(version 1.699z956f)
o display fix on arabicconsole.device : last letter after ESC-ESC was smooth ;
o missing test on a closed letter at the end of an ArabSCII word and ending with
ESC-ESC in big-algo (with rules) added ;
o big change in setting for ASCII/ArabSCII state at boot in algo() of edit.c

(version 1.699z957): edit.c, cmdline.c, misccmds.c, io.c & arabicconsole.device
are updated and bugs are fixed.
- Better handling of ASCII mode (between ESCape sequence) and numerals too ;
- Remember ESC key is ok for eda and CTRL-w assigned to F12 for STeVia editor.

(version 1.699z958) updates of edit.c, misccmds.c and arabicconsole.device
Happy new year 2020!

(version 1.699z959) updates of edit.c, arabicconsole.device(delete the old file)
European accents(upper 8bits of ArabSCII table) are permitted in ESC sequences
(i.e European-ASCII or [E]SCII) to deal with steady editing, after translation
occurs from ArabSCII to ESCII, or from ESCII to ArabSCII.
Even it's not recommended to seize words with european accents ; for a clear
distinction between ArabSCII and ASCII. And a future datatype charset detection.
This (permitting accents in ESC sequences) only allows a _kind_ of transparent
mode between ArabSCII and ESCII when editing (in) _both_ charsets.
Best wishes for 2020!

(version 1.699z96) Algorithm of edit.c/cmdline.c/io.c ; arabicconsole.device
This is a final version of the algorithm to seize arabic with ad-hoc
vowelization. Because, arabic word can be entered without any vowel with the
8-bit ArabSCII code and is almost (excepted confusion in wa-hamze with previous
dhamma vowel case with current dhamma case) equivalent to full/semi text-vowel.
(Vocalized text was also a goal, look at code for narrator.device)

This is the end of the story, the trip and I can now, for myself, answer the

Why there are no vowels (excepted chadda) in arabic newspaper?

Nor because they are lazy typesetter guys, but because vowels could be retrieved
 from the text with brain calculation and my work is a proof by program:
coding&implementing an algorithm..

I forget to remember you, how to enter a hamza alone, by ALT-SHIFT-&(7)
combination [US-keyboard-layout/ArabSCII].

(version 1.699z97) numerous minor updates

Font should normally permit something like (no need yet for a datatype) [kerning
and spacing at "-9" , but for now multiview not working] :

> multiview fontname=mungi-sakkal-kufi simple_arabic_file_with_no_vowel.txt

(a "simple_file.txt" contains two characters "ac" for instance - means father)

arabicconsole.device expands the whole window ; arabcon-handler this way also.

"Big Algo()" has changed by a lot of minor updates (edit.c ; cmdline.c ; io.c).

(version 1.699z98) some minor updates to arabicconsole.device and "Big Algo()"
No comment at all

(version 1.699z99) minor work on lam+alif_hamze with Big Algo()(edit,cmdline,io)
No comment

(version 1.7) drop regression on lam+alif_hamze with Big Algo()(edit,cmdline,io)

(version 1.72) fix wa-hamza alone ; wa-hamza, alif-dhamma starting in Big Algo()

(version 1.8fe) version usable for AOSFEu0 (previous version not tested)

(version 1.9Final) better termination on CTRL- (File Separator) for AOSFEu0

(version 1.9Final2) release two
o arabcon-handler (ARABCON:) no more message : "parent exit before child" ;
o arabicconsole.device proper restart when digit followed by letters ;
o SteVie (edit.c) clean and coherent(with ed) digit insertion before number.

(version 1.9Final21) release two fix
o arabicconsole.device proper restart display digit fix on sequence with Escape.

(version 1.9Final22) old regression(2019) removed, on Capital words intermingled
with non-Capital. Better restart too (see above) when digit followed by Capital
(words enter with CAPSLOCK[dump mode] or starting with a CAP by using Alt- key).

(version 1.9Final23) minimals corrections
o fix restart on a word ending with square brackets followed by Capital (not
really part of the regression above, but related) ;
o choosed occidental number and display not tied to arabic word when on left
margin (so "no more flickering" when editing into number) with Amiga_1256 code:
  Test this only with "run com", not "run com0x20".
  Remember use F10 to change from arabic to french and SHIFT-F9|F10 for margins.

[com|0x20] don't talk with ARABCON: just talk with arabicconsole.device.
ARABCON: (arabcon-handler) support the basic of ArabSCII standard no other.
Perhaps, you can write handler ARACON1256: or ARACON449: for those codes.

(version 2.0Final) -- no reentrancy code for arabcon-handler so,
Add an ARABCON3-9: entry as necessary in the arabic mount file: "L/mountlista".

- L/arabcon-handler , DEVS:arabicconsole.device updated (type&copy compatible);
+ ArabicLauncher is my ArabicConsole not really an ArabicShell (so, use 'setenv'
instead of local 'set', because of this),
+ you can use the arabic pipe '|' 0xBF ALT-SHIFT-/? with pl (plus is a version
of the more cmd) and the pisa or "pisa anything" piped ;
+ isarascii.c is for future DataType recognition, isa.c (to test RC local var.)

Example for ArabicLauncher:
ESC dir | pl
or in arabic with no ESCape in front of:
diE' | pL'
alias diE'=dir (' means letter before entered with ALT-key)
alias pL'=pl

(version 2.01Final) L/arabcon-handler , DEVS:arabicconsole.device updated

(version 2.02Final) some STeVia & arabicconsole.device regressions wipe out.

(version 2.03Final) isNum: edit.c, misccmds.c ascii detection (_2+3) corrected;
ascii line continuation (wrapping) corrected in arabicconsole.device (ed fix).

(version 2.04Final) the pl(plus.c) "more" like program quit on 'q' or ESCape.
The Amiga on its time and now, the Matrix picture helps me (to go) on coding!

(version 2.05Final) OBSOLETE

(version 2.06Final) Console ArabSCII display feature (plus.c|pl, pisa, pa.l|pa)
To display directory which contains arabic filenames (isArabSCII) use
combination (combo of piped commands) under ArabicLauncher :

<ESCape> dir | pisa 1 | pl 1
<ESCape> dir | pisa | a2pr/pa | pl 1

'|' under ArabicLauncher is an Arabic pipe (0xBF) ALT-SHIFT-/? on US keyboard.

(version 2.07Final) bug on plus.c (merely too complicated) corrected.

Actually, there was a fix made on difference feature of arabcon-handler(no code
given) because of 0x1F becoming 0xA0(an arabic carpet which means continuation).

Now, when difference takes place (i.e a[i] != b[i]), the two lines one with 0x1F
and the other with 0xA0 are exceptionally equivalent : so that only one
validated line is displayed within ARABCON: (on cooked mode).
Instead of an arabic line followed by an ascii line which purpose is to show the
difference (arabic/ascii) between two displayed lines.

(version 2.08Final) minor updates and source code cleanup (also no more
plus0-bug.c file in the archive)

Note that 0x1B reopen the letter when the second 0x1B is followed by a letter.

So we enter 0x1F before the terminating 0x1B to close the last arabic letter of
a word. Remarks, this can be enhanced so that to replace 0x1F with the byte
following the last arabic letter instead of inserting 0x1F after the word.

(version 2.1Final) Arabic followed by "++" display resolved (in
arabicconsole.device & in STeVie ; edit.c misccmds.c with new arabscii flag in
"ascii" reverse detection code)
The aca.ca file is a source program in C_arabic and contains some post-increment
on variable like j++.

(version 2.2Final) plus.c source code prototypes cleanup, STeVie (edit.c)
insertion in front of ascii regression wipe out, a kludge too.

(version 2.21Final) updated STeVie(edit.c) to better handle insertion in front
of ascii[identESCaped or free_numbered] line 704: "(ascii0&&!pascii) ? ( ' ' <=
... ) : ( 'A' <= ... )"

(version 2.22Final) fix STeVie(edit.c) by a simplified line 704: "|| ascii0 && (
' ' <= ..."

(version 2.3Final) better pl(us) command and arabcon-handler update accordingly.
Try : <ESCape> dir | pisa 1 | pl 1 (with some coded arabic_filename in the dir.)
Or  : alias diE'=dir ... (' means letter before entered with ALT-key)
Define your aliases before launching "ArabicLauncher 3" after defining ARABCON3:
'|' under ArabicLauncher is an Arabic pipe (0xBF) ALT-SHIFT-/? on US keyboard.

(version 2.4Final) workarounds for pisa and pl(us)

(version 2.5Final) can more easily save with filename in arabic, always using
ALT- for the last letter (but no previous one hardcoded) with stevie (:w :e :r)

(version 2.6Final)
o Bug fix on 'aA' becoming 0xA6 hamza alone when calling algo(0) (see cmdline.c)
o Proper ASCII with ArabSCII display on the bottom bar for (:w :e :r) commands
(see V2.0 of windstr() function in window.c) - stevie only.

(version 2.61Final) filename extension like .xyz (abc.xyz) in arabic (ALT- key
at the end) too with (:w :e) commands of stevie.

(version 2.62Final) filename in arabic source-code(window.c) simplified and
overall fixed. Always with stevie(full-page editor) and ALT- key for arabic

(version 2.7Final) same processing between stevie and ed for hamza alone at end.

(version 2.8Final) updated devs/arabicconsole.device (delete the other before);
Excepted for chadda on previous followed by hamza alone, there's quasi similar
behavior between stevie in raw mode(rules based algo) and ed(hand-crafted algo)
in cooked only editing mode, no save ":w" function (which is rules based too).
Use ":w0" if you want to bypass running the algo when saving with ed.

(version 2.81Final) updated devs/arabicconsole.device again, stevie and ed.
I wish that's finished!

(version 2.82Final) updated devs/arabicconsole.device [hand-crafted algo]
Regression on long vowel+hamza chadde wipe out, now similar with closure+hamza.

(version 2.83Final) updated devs/arabicconsole.device [hand-crafted basic algo]
Hand-crafted algo (ed['>' prompt], using cooked mode of ARABCON: 0x20) takes
"input behavior" near to rules-based arabic algorithm of stevie['~' are trailing
lines] which set ARABCON: into raw mode(no input transformation at all, with
char per char at a time -- mode 0x27 on CMD_NONSTD!).

(version 2.84Final) updated devs/arabicconsole.device [hand-crafted algorithm]
There were errors when vowel on hamza alone in the middle of an arabic word,
with ed editor (that is under ARABCON: on cooked mode).
You just need to update your "devs/arabicconsole.device".
I apologize.

(version 2.85Final) updated devs/arabicconsole.device [hand-crafted begin's]
Added Small-alef on hamza alone.
Type F9 (function key nine) for Small-alef or CTRL-ALT-X for Small-alef-shadda,
on an US keyboard layout.

(version 2.86bFinal) updated devs/arabicconsole.device [hand-crafted vs 4 rules]
I'm stopped upgrading hand-crafted to the level of the rules-based one's.
There are small in/out differences between rules-based and hand-crafted algos.
Both are not perfect but rules-based algo is deterministic instead of handmade ;
that's to start with four parts : initial, final, medial and hamza at the end.
Also, I've tried to include treatement of 0xA6 in addition to 0xC1 which means
hamza alone at the end, to the beginning of hand-crafted to simplify things.

A goal is to rewrite arabicconsole.device with the rules-based algo of stevie.

You've got the source-code in edit.c, cmdline.c or io.c for, but giving the
actual source-code of arabicconsole.device handmade will give you a headache !

(version 2.87Final) updated devs/arabicconsole.device (minor update around 0xAD)
Console or ed for word like iqra(#)'oun with a second alif enter 0xAD(#) before.

(version 2.88Final) arabicconsole.device, stevie(edit.c;cmdline.c), ed(io.c)
Almost perfect vowelization (because with ed [or Console] two sukuns follow with
bad support ; support not force to alif which stay alif-maqsoura-hamza or
wa-hamze). Nevertheless this is marvellous!

(version 2.89Final) version 2.88 fixed: perfect vowelization. Marvelous!

(version 2.9Final) arabicconsole.device (ed) input sukun on alif-maqsura-hamza
(or on wa-hamze) following an isolated letter(indecise) consistency with stevie.

(version 2.92Final) arabicconsole.device (ed) bug fixed Small-alif on isolated
letter(indecise) beginning, followed by hamza becomes alif-hamze and not hamza
alone ; that was ok only with a fatha vowel on the hamza alone.

(version 2.93Final) arabicconsole.device, stevie(edit.c;cmdline.c), ed(io.c)
Better integration of Small-alif(F9) on first letter + followed by hamza or by
ya and wa-hamze for instance.

(version 2.94Final) stevie(edit.c;cmdline.c), ed(io.c)
Difficult Small-alif(F9) on previous letter (not necessary on first letter) +
followed by ya and wa-hamze takes into account ; but wa and wa-hamze differ(ed).

(version 2.95Final) stevie(edit.c;cmdline.c), ed(io.c)
Actually fixing a bug in big algo when Small-alif starts a word like above 2.94.

(version 2.96Final) stevie(edit.c;cmdline.c), ed(io.c) [simplified]
Kindly (cptvl = 1) solution to hack due to bug fix of 2.94|2.95 previous version

(version 2.97Final) stevie(edit.c;cmdline.c), ed(io.c)
Minor correction - bottom of big algo rules-based 'voyLong && 90' is commented
so Small-alif on first letter acts as alif-madde for two letters.
This change is required because there's no more 'voyLong' at the end with "cptvl
= 1" added from version 2.96 above.

(version 2.98Final) arabicconsole.device (ed) update
Better input of hamza as alif preceded by wa or ya without vowel or with sukun.
Almost identical (input) treatment of hamza between stevie~ (rules-based big
algo) and ed> (handcrafted big algo which is the one historically by default in

(version 2.99Final) arabicconsole.device(dev_io.c) [5 lines commented at "le
laisser ici" ; indications just for me because for dev_io.c no source is given]
Wa-hamze at the end of ya long must stay wa-hamze.

(version 2.9aFinal) stevie(edit.c;cmdline.c), ed(io.c) [label "sautVoyDejaLa:"]
Bug on alif-maqsura-hamza without vowel followed by wa-hamze with vowel(fatha or
dhamma) changes into alif-maqsura-hamza instead of wa-hamze stuck, fixed.

(version 2.9bFinal) stevie(edit.c;cmdline.c), ed(io.c) + arabicconsole.device
A lot of enhancements for complete or perfect vowelization on wa-hamze, on
alif-maqsura-hamza (and alif-hamze with no vowel onto itself).

(version 2.9cFinal) stevie(edit.c;cmdline.c), ed(io.c) + arabicconsole.device
Some bugs corrected for perfect vowelization: several hamzas.. this is rare.

(version 2.9dFinal) stevie(edit.c;cmdline.c), ed(io.c)
Major corrections for perfect vowelization on several hamzas following.

(version 2.9eFinal) stevie(edit.c;cmdline.c), ed(io.c)
Minor corrections for perfect vowelization: ra'iis, r'iaas.

(version 2.9fFinal) stevie(edit.c;cmdline.c), ed(io.c)
Bug fix for perfect vowelization when at last wa-hamza for the vowel to maintain

(version 2.9gFinal) stevie(edit.c;cmdline.c), ed(io.c)
Some modifications for perfect vowelization: a case was missing and fine tuning.

(version 2.9hFinal) stevie(edit.c;cmdline.c), ed(io.c)
Fine tuning for perfect vowelization: hamza alone stop propagation and tuning.

(version 2.9iFinal) stevie(edit.c;cmdline.c), ed(io.c) + arabicconsole.device
Bug fix for perfect vowelization: *ya-hamza with dhamma to become wa-hamze* at
end, wa-hamze in the middle, everything with fatha or dhamma vowel at start.

(version 2.9jFinal) stevie(edit.c;cmdline.c), ed(io.c)
Same default(0xA6=>0x41) treatment of 0xA6 in the middle of a word between
stevie~ (stevie/src dir.) and ed> (that is arabicconsole.device no source given)
for (stevie) proper propagation [both identical(stevie~ ; ed>) input is a goal].

(version 2.9kFinal) stevie(edit.c;cmdline.c), ed(io.c)
Bug fix for perfect vowelization: a test without exist vowel + prevVoy=curVoy=..

(version 2.9lFinal) version jump ; see below

(version 2.9mFinal) stevie(edit.c;cmdline.c), ed(io.c)
Try to correct regression introduced by prevVoy=curVoy=... for perfect
vowelization with (x)(y')(y') and dhamma vowel on both (y'=alif-maqsura-hamza).
There's a (partial) interpretation of (x)(y') before (x)(y')(y') so confusion.

(version 2.9nFinal) stevie(edit.c;cmdline.c), ed(io.c) + arabicconsole.device
Enhancements when starting with alif-hamze-kasra followed by alif-maqsura-hamza,
or, followed by wa-hamze(still remains, excepted with vowel). 

(version 2.9oFinal) stevie(edit.c;cmdline.c), ed(io.c) + arabicconsole.device
When starting with alif-hamze-kasra followed by alif-maqsura-hamza, or followed
by wa-hamze, this last one always becomes hamza on maqsura(alif-maqsura-hamza).

(version 2.9pFinal) stevie(edit.c;cmdline.c), ed(io.c) + arabicconsole.device
Better perfect vowelization with alif-hamze-kasra above (perfect means no need
to complete with all vowels to induce hamza support), and fix a bug with
sukun-sukun on arabicconsole.device also.

(version 2.9qFinal) nop! no release

(version 2.9rFinal) stevie(edit.c;misccmds.c;main.c) + arabcon-handler
- Bug on multiline with trailing ASCII on edit and on delete with stevie fixed
(ascii detection of edit.c and misccmds.c).
- When at end of line, speedup on every new (arabic or ascii)word that is after
a space at the end of line ; with stevie (main.c;arabcon-handler 0x1E) only.
- recompile of arabicconsole.device but no need to update. Just update the
DOSdevice : l/arabcon-handler.

(version 2.9sFinal) stevie(edit.c;misccmds.c) updated [in ASCII detection
"lgdf() <= Columns" and not strict '<' solely]

(version 2.9tFinal) stevie(edit.c;misccmds.c) + arabcon-handler(no source code)
- Regression on speedup acceleration when ASCII at line end fixed (no speedup);
+ rework of trailing ASCII at end also, to allow better multiline.
Don't forget to update l/arabcon-handler in addition to stevie/src/stevie.

(version 2.9uFinal) l/arabcon-handler (no source code given - line 1050)
Attempt to unify treatment of speedup for line terminating by '00' and 'nl'
(attempt without regression).

(version 2.9vFinal) l/arabcon-handler (no source code given - lines 1040-1055)
Second attempt to conciliate word speedup and caesura number at the edge,
without regression.

(version 2.9wFinal) stevie(main.c) updated
Big regression on display when at a blank line [Ctrl-L] wiped out.

(version 2.9xFinal) stevie(main.c; edit.c) updated
Acceleration at the end of line almost perfect with a better display (no blanks
which need to use so often Ctrl-L to refresh manually the display).

(version 2.9yFinal) stevie(main.c; edit.c) updated
"I do my best for" STeVie editor and multiline support, always with word
acceleration at the end.

Note: the acceleration technique is like 'caching' on DOSdevice
[arabcon-handler] which interprets on raw mode, 0x1E and delete it on the stream
; but search for the last word, separated by a blank, to display.
Else the whole line given is displayed (on raw mode) and it can be a big
multi-line of text, slowing down editing at the end, only(do my best here too).

(version 2.9zFinal) stevie(main.c; edit.c) updated
- Rewind of automatic cleaning at the bottom for multiline, bacause not steady.
- Accelaration at the end is for Arabic word only, because if ASCII word, it is
incompatible with ASCII line break.

(version 2.9z0Final) l/arabcon-handler updated [keep the last arabcon-handler]
ASCII inside 0x1B slow down editing even at line end, because if ASCII word, it
is incompatible with ASCII line break. Arabcon-handler and arabicconsole.device
need the whole line to determine if their is a line break (i.e > Columns).

(version 2.9z1Final) stevie(edit.c;misccmds.c)
Bug fix on add/delete ASCII (detection) at the end of line, when the second line
is almost a line break.

(version 2.9z2Final) bug fixes & notes [a video demo is to come]
Use >s:scripted    to launch the two editors (for ESC use Ctrl-W under stevie)
Use >mount arabcon3: from l/mountlista
use >ArabicLauncher arabcon3:
for the Arabic "CLI" : a program launcher (the arabic pipe also allows to "run"
when at end of a line ; so don't use run in the Arabic CLI)

ARABCON3: because my DOS device ARABCON is not reentrant so ARABCON: and
ARABCON2: and ARABCON3: for three programs simultaneously in memory using DOS
device ARABCON.

Notes :
aca.ca is an arabic file so use the arabic editor because of special characters.
s:gca is a script to launch the gcc compiler with a2Cfront-end before (gcc) ;
Try s:gca aca (the aca executable yielded is the same as the arabscii program)

(version 2.9z3Final) minor update on devs/arabicconsole.device C_language/aca.ca
C_language/arabscii: alif maqsura on tanwin removed for a nicer display.

(version 2.9z4Final) minor updates on stevie[algo() 0xB8=>0xBD cancelled] and ed
editors (main.c Ctrl- to quit display) + video(2.9z4Final) for installation.

(version 2.9z5Final) lots of small fixes

(version 2.9z6Final) hamza support inference when one or two hamza follow with
none, one or two vowels

(version 2.9z7Final) better (vowel and) hamza support inference 

(version 2.9z8Final) bug fix when quitting on A1222+
You may use parenthesis to comment on ToolTypes of devs/monitors Radeon:
for a default screen, instead of Workbench screen.
Use 'french' (ISO-8859-1) solely or 'english', without
-ISO-8859-15 after their name on Prefs/Locale program.

(version 2.9z9Final) upward compatibility with A1222+
Multiline of FEu2 or FEa1222 respected 

(version 3.1Final) alternate multiline without shifting on ACTION_WRITE
There are three environment variables you can play with ed line editor:
1. setenv tabstop=4 (default 8) use ,n display command
2. setenv strictArabSCII=1 (default 0) for strict comparison when you use 
    substitute s// commands and ,l to see the values changement ;
    As always you can use the combo we (write/edit) to set all Arabic right.
3. setenv gauge=30 (default 50) use it with ,P [display with big P] 0p to unset
All setenv need to reset of ARABCON i.e a soft reset is enough.



Remarks : 'ed' is not the Amiga one's, but the one written by Ken Thompson for
the Unix operating system.
'STeVIe' Vi clone for Enthousiasts is due to Tim Thompson, a great composer too.

I put a default Escape code (033 in octal) at the end of the command prompt to
"disable arabic". Search for 'prompt' in main.c of the archive.

In fact, 'Esc' (not followed by '[' or ']') continues to display from
Right-to-Left but uses a latin font and simply disable arabic letter processing.
That is the peek/poke appropriate form's letter compiling due to

When you issued DOS commands to ARABCON: like echo "test" > arabcon:
it now closes the window just after writing ; no arabcon://///WAIT option, yet!


An article in french (translation at left-top onto site) :


If you want to support my work on Arabic Console, there's a Button at the end of
this article.

Copyright © 2004-2024 by Björn Hagström All Rights Reserved