Commit 1d76ef2e authored by Dmitry Bogatov's avatar Dmitry Bogatov

New upstream version 2.82

parent 650ad97a
e3 is not public domain software --- it is copyrighted. However, it may be used
for any purpose without royalty or fees in accordance with the terms of the
Copyright (c) 2000-2006 Albrecht Kleine
Copyright (c) 2000-2010 Albrecht Kleine
All rights reserved.
You may distribute under the terms of the GNU General Public License.
See COPYING.GPL for more details.
You may distribute under the terms of the GNU General Public License
version 2. See COPYING.GPL for more details.
......@@ -20,5 +16,3 @@ copyright.
Sep 2016 v2.82
-now using fstat64-syscall on Linux32
(tnx bugreport to kp)
Feb 2016 // Author: Albrecht Kleine
-avoid using "brk"-syscall due a conflict with
Address Space Layout Randomization (ASLR) in Linux:
neeed if /proc/sys/kernel/randomize_va_space is >= 2
**** v2.81 the 2nd 'post final' release *****
May 26th 2010 // Author: Albrecht Kleine
-added new README
-fixed bug: avoid segfault in UTF-8 mode
after loading some binary files
-fixed bug: status line in vi mode
-fixed paste bug in 64 bit versions
(emacs mode ^Y and similar in other modes)
-strictly show only 7 bit in 7-bit ASCII mode
avoiding terminal display quirks
-changed default e3 to UTF-8 autodetection
-fixed minor helptext bug
-readded Windos make script (lost in 2005)
-removed most binary stuff
-removed arm-linux, elks and others
-kept only important part in Makefile
***** v2.8, the 'post final' release *****
Sat Oct 27 21:10:34 2007 Albrecht Kleine <>
-e3.h: UTF8 runtime detection now disabled by default
# 1. edit you OS if you want....
#OS=W32 ** please use a separate make.bat for W9x **
# Set this to gzexe or upx if you want compression
# COMPRESS=gzexe
# 2. edit dest dir prefix if you want....
# 3. for programmers only: debugging in 64 bit Linux
# 3. for vi friends only (else leave as is):
# choice between '/bin/ex' or default '/bin/sed'
# 4. decide for nasm or yasm assembler (for 64 bit Linux version only)
#----------------------do not edit below line-------------------------------
#______________________do not edit below line________________________
ASOURCES=e3.asm e3.h
AFLAGS = -w+orphan-labels -f elf
NASM=nasm -O2
ifeq ($(NASM_OR_YASM),nasm)
ASSEMBLER64=nasm -O2 -g -w+orphan-labels -f elf64 -o e3.o e3.tmp -l e3nasm64.lst -DLINUX -DSED -DAMD64
ASSEMBLER64=yasm -g STABS -a x86 -m amd64 -f elf64 -p nasm -L nasm $(AFLAGS) -l e3yasm64.lst -o e3.o -DLINUX -DSED -DYASM -DAMD64 e3.tmp
#---------------- default--------------------------
all: 32
all: e3
#---------------- 32 bit LINUX (and perhaps BSD) --
e3: $(ASOURCES) Makefile
32: $(ASOURCES) Makefile
ifeq ($(OS),LINUX)
$(NASM) -f bin -l e3.lst -o e3 e3.asm -DCRIPLED_ELF=1 -D$(OS) -D$(EXMODE) -DNASM
nasm -O2 -f bin -l e3.lst -o e3 e3.asm -DCRIPLED_ELF=1 -D$(OS) -D$(EXMODE)
chmod +x e3
ifeq ($(COMPRESS),upx)
if which upx > /dev/null 2>&1 ; then \
upx -q -q -q -k -9 e3 ; \
fi ;
ifeq ($(COMPRESS),gzexe)
if which gzexe > /dev/null 2>&1 ; then gzexe e3; fi;
echo $(ASVER)
$(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -D$(OS) -D$(EXMODE) -DNASM
ifeq ($(OS),QNX)
ld -s -o e3 e3.o -lc
nasm -O2 $(AFLAGS) -o e3.o e3.asm -l e3.lst -D$(OS) -D$(EXMODE)
ld -s -o e3 e3.o
strip --remove-section .comment e3
ln -sf e3 e3ws
......@@ -68,93 +55,24 @@ endif
ln -sf e3 e3vi
ln -sf e3 e3ne
# ------------- 64 bit L I N U X ------------------
# next for running in gnu debugger
debug: $(ASOURCES) Makefile
$(NASM) $(AFLAGS) -g -o e3.o e3.asm -l e3.lst -D$(OS) -D$(EXMODE) -DNASM
ld -b elf32-i386 --oformat elf32-i386 -s -o e3 e3.o
strip --remove-section .comment e3
ln -sf e3 e3ws
ln -sf e3 e3em
ln -sf e3 e3pi
ln -sf e3 e3vi
ln -sf e3 e3ne
# L I N U X only
# Experimental stuff for using YASM assembler
# needs some sed changes (jmp vs jmp near) due heavy bugs in YASM optimizer
# (how to switch off that optimizer ?)
yasm: $(ASOURCES) Makefile
cat e3.asm | sed -f e3_nasm_yasm.sed > e3.tmp
yasm -a x86 -m x86 -f elf32 -p nasm $(AFLAGS) -l e3.lstyasm -o e3.o -DLINUX -DSED -DYASM e3.tmp
rm e3.tmp
ld -b elf32-i386 --oformat elf32-i386 -s -o e3 e3.o
ln -sf e3 e3ws
ln -sf e3 e3em
ln -sf e3 e3pi
ln -sf e3 e3vi
ln -sf e3 e3ne
# L I N U X / AMD-64 only
# ditto YASM stuff
yasm64: $(ASOURCES) Makefile
cat e3.asm | sed -f e3_nasm_yasm.sed \
| sed -f e3_yasm_yasm64.sed >e3.tmp
yasm -a x86 -m amd64 -f elf64 -p nasm -L nasm $(AFLAGS) \
-l e3.lstyasm64 -o e3.o -DLINUX -DSED -DYASM -DAMD64 e3.tmp
rm e3.tmp
ld -b elf64-x86-64 --oformat elf64-x86-64 -s -o e3 e3.o
ln -sf e3 e3ws
ln -sf e3 e3em
ln -sf e3 e3pi
ln -sf e3 e3vi
ln -sf e3 e3ne
# L I N U X only
# Experimental stuff for using NASM assembler
nasm64: $(ASOURCES) Makefile
cat e3.asm | sed -f e3_nasm_yasm.sed \
| sed -f e3_yasm_yasm64.sed >e3.tmp
$(NASM) -w+orphan-labels -f elf64 -o e3.o e3.tmp -l e3.lst64 -DLINUX -DSED -DYASM -DAMD64 -DNASM
rm e3.tmp
ld -b elf64-x86-64 --oformat elf64-x86-64 -s -o e3 e3.o
64: $(ASOURCES) Makefile
cat e3.asm | sed -f e3_32to64.sed >e3.tmp
ld -b elf64-x86-64 --oformat elf64-x86-64 -o e3 e3.o
ifneq ($(DEBUG),true)
strip e3
ln -sf e3 e3ws
ln -sf e3 e3em
ln -sf e3 e3pi
ln -sf e3 e3vi
ln -sf e3 e3ne
# added for compatibility reason:
nasm32: e3
# next for cross asm for the ELKS people
nasm -w+orphan-labels -f as86 -o e3-16.o e3-16.asm -l e3-16.lst -D AS86 -D ELKS -DNASM
ld86 -0 -s -i -H 0xF800 -o e3-16 e3-16.o
# next two for cross asm testing
$(NASM) -f coff -o e3.oW32 e3.asm -l e3.lstW32 -DW32 -DNASM
rm e3.oW32
$(NASM) -f elf -o e3.oQNX e3.asm -l e3.lstQNX -DQNX -DNASM
rm e3.oQNX
# next for release maintainance
rman -f HTML >e3.html
# -------------------------------------------------
install: e3
ifeq ($(OS),QNX)
cp ./e3 $(BINDIR)/e3
ln -sf $(BINDIR)/e3 $(BINDIR)/e3ws
ln -sf $(BINDIR)/e3 $(BINDIR)/e3em
ln -sf $(BINDIR)/e3 $(BINDIR)/e3pi
ln -sf $(BINDIR)/e3 $(BINDIR)/e3vi
ln -sf $(BINDIR)/e3 $(BINDIR)/e3ne
install -d $(PREFIX) $(BINDIR) $(MANDIR)
install -m 755 e3 $(BINDIR)
ln -sf $(BINDIR)/e3 $(BINDIR)/e3ws
......@@ -163,14 +81,6 @@ else
ln -sf $(BINDIR)/e3 $(BINDIR)/e3vi
ln -sf $(BINDIR)/e3 $(BINDIR)/e3ne
install -m 644 $(MANDIR)/e3.$(MANSEC)
armlinux: e3
@cd armlinux && make all
rm -f e3*.o e3*.lst e3 e3em e3pi e3vi e3ws e3ne *~ \
PIPE_IN e3test~ e3test e3dync e3dync2 e3statc \
armlinux/*.o armlinux/e3arm
rm -f e3*.o e3*.lst e3.tmp e3 e3em e3pi e3vi e3ws e3ne *~
README for mini editor e3 release 2.7.1
(c) GPL 2000-07 Albrecht Kleine
e3 is a micro text editor with an executable code size between
......@@ -19,82 +13,34 @@ whichever the user chooses.
Also the user can calculate arithmetics inside the text.
e3's assembler version is available on 9 important OS,
using 16/32/64 bit CPUs:
* Linux kernels 2.x
(from 16 bit ELKS via 32 bit x86 up to AMD64,
plus ARM-linux kernel 2.4 @zaurus PDA)
* FreeBSD 2.x-5.x
* OpenBSD 3.4,
* NetBSD 1.6,2.0
* BeOS 5PE
* Win98
* QNX RTP 6.1
* Atheos 0.3.7
* FreeDOS kernel 1.1.24
There is also a GNU-C-written version for non-i386-Unix
and non-ARM-Linux platforms (e3.c) using Wordstar keybindings only.
This README doesn't further mention e3.c. (Just make it!)
e3 is designed to be INDEPENDENT OF LIBC OR ANY OTHER library,
except on QNX and Win32.
It's been tested using the terminal console, but Xterm, Eterm,
kvt, rxvt, vt220 and vt100 should work too.
using 16/32/64 bit CPUs.
Beginning in version 2.6.0 e3 does support UTF-8 coding of unicode
characters like this: α ( <---should be a greek alpha )
2. BUILD on Linux, *BSD
Also the Makefile destinations are reduced to:
make # same as make 32 (needs NASM)
make 32 # e3 of 32 bit
make 64 # e3 of 64 bit
make install
make clean
2a. BUILD on Linux/FreeBSD/NetBSD/BeOS/QNX/Atheos (32 bit)
A. For assembling of e3 you need NASM assembler release nasm-0.99.05
B. If you don't like the default OS or destination (LINUX , /usr/local/ )
then edit top of Makefile
(other possible OS are FreeBSD or BEOS or QNX or ATHEOS).
C. e3 is expecting "sed" at /bin/sed, or "ex" at /usr/bin/ex; otherwise change
SEDPATH in e3.asm. By default /bin/sed is used, but you can
use /usr/bin/ex instead, if you edit Makefile as appropriate.
(NOT available for BeOS,QNX,Atheos)
D. Build e3 via typing 'make' (or 'gmake' on FreeBSD) for building:
e3 : the default Wordstar-like version,
e3ws : ditto Wordstar,
e3em : the Emacs-like version,
e3pi : the Pico-like version,
e3vi : the vi-like version.
e3ne : the Nedit-like version.
(e3?? are symbolic links to e3. In fact only one executable is built.)
E. Optional: type 'make install' or
move or copy e3 and its symlinks wherever you want.
F. Optional: some more editable options are on top of e3.h:
for example, if you don't like WS mode, choice an other default mode
by setting DEFAULT_MODE to one of EM, NE, PI or VI .
Also you could activate error beeping in vi mode by uncommenting
the BEEP_IN_VI line.
2b. BUILD on Linux (64 bit)
A. For assembling of e3 you need YASM or NASM assembler,
e.g. yasm
or NASM version 0.99.05
Some other options exist by editing the Makefile:
DEBUG=false # or true
NASM_OR_YASM=nasm # or yasm
B. see 2a, except for make, this should be:
make yasm64
make nasm64
Editing e3.h opens some other choices, most important
the choice between default UTF-8 and 7bit-only support.
About more changes, see top of ChangeLog file.
2c. BUILD on Win9x / ME / DOS
3. BUILD on Win/DOS
A. For assembling of e3 you need NASM assembler nasm-0.99.05
and ALINK (Anthony's Linker) and Win32 Import Library (win32.lib)
Both are available for free on the net.
......@@ -109,52 +55,6 @@ C. Optional: some more editable options are on top of e3.h:
your favourite mode.
2d. BUILD on OpenBSD
Here is a Makefile for BSD-make included. See ./bin directory.
Also you need current NASM (nasm-0.99.05)
In general you don't need to change that file.
2e. BUILD for ELKS
This is done usual on 32 bit x86 Linux systems either
by typing "make elks" or changing to elks/ and typing "make".
You need to have installed the ld86 linker (part of dev86 suite).
2f. BUILD for ARM Linux
Simply type "make armlinux" on your x86 box.
You will need the ARM linux toolchain, at least
arm-linux-as: GNU assembler 2.11.2
arm-linux-ld: GNU ld 2.11.2
Fetch it via:
Or adjust 'Makefile' and build e3arm on the destination ARM box.
FINAL RELEASE with some adjustments for supporting current
NASM and YASM assemblers both supporting for 32/64 bit.
So now on LINUX(x86) beside
make yasm
make yasm64
you have the NEW make destinations
make nasm64
make nasm32 (<- same as pure 'make')
Please don't try old NASMs or YASMs. It won't work.
Except Linux (16/32/64 bit) no more binaries are included.
* All versions of e3 accept a filename as argument; see the man page.
......@@ -241,11 +141,6 @@ do NOT expect very high precision.
* The win9x version does no accept any filename on the command line if this
filename contains blank spaces.
* The size of files you edit is currently limited to the maximum of either
1024k or twice the file's size if you start with a file on command line, i.e.,
for example, starting e3 with a 2MB_sized_file gives you another 2 MB space
for inserts.
* You can choose inside the edit session (w/o leaving e3) between the
different edit modes, for example:
-start e3em <filename>
......@@ -296,95 +191,3 @@ do NOT expect very high precision.
^_ for EMACS mode
u for VI command mode
^U for NEDIT mode
7. Notes on UTF-8 for the Linux/ASM-version
* By default now e3 does does support UTF-8 coding of unicode
characters like this: α (should be a greek alpha).
* You could disable UTF-8 support in e3 by editing e3.h at line 16:
%define UTF8
;;; %define UTF8
and run 'make' again.
* Running e3_with_disabled_UTF-support at a UTF-8 console
you will see two points .. for UTF-8 characters e.g. the greek alpha.
* If your terminal does _not_ support UTF-8 it is strongly
recommended to _disable_ UTF8-support in e3.h,
because output of some characters could be scrambled.
* e3 will _not_ convert your files from/to UTF-8 coding.
It does simply _use_ your terminal encodings.
* UTF-8 characters like © (c) will look very false on non-UTF-8 terminals,
but e3 can't help here. (So at first use a file converter.)
* If you simply call e3 without file argument the initial screen of e3
will tell you whether UTF8-support is built in:
MicroEditor e3 v2.7.0-UTF8 ©2000-06
MicroEditor e3 v2.7.0 (C)2000-06
* If it is a version with UTF8 and you are running
e3 in an UTF8 terminal, you can switch the editor
from UTF-8 mode to 7 bit mode and back.
Use the special keys:
^KU in WS mode
^QV in Pico mode
^Y in Nedit mode
^U in Emacs mode
ESC:u in vi mode
Makefile - (edit destination path and OS if desired)
e3.h - NASM source code - man page (copied by default to /usr/local/man/man1)
e3.html - man page, HTML version
README - you are reading this
ChangeLog - version history
COPYRIGHT - please read before using e3!
e3c/* - C stuff for non x86 systems, e.g. Alpha
elks/* - specials for ELKS
binaries/* - binaries separated for operating systems
armlinux/* - specials for Linux @ ARM RISC CPU
*.sed - for using YASM assembler and/or making 64 bit versions
Konstantin Boldyshev <konst at>
Mark Zealey <mark at>
Urs Rau <urs.rau at>
Terry Loveall <loveall at>
David Douthitt <n9ubh at>
Bjoern De Meyer <bjorn.demeyer at>
Matthias Kopfermann <kopfermann at>
Tim Wegner <twegner at>
Michele Andreoli <m.andreoli at>
Aaron Lehmann <aaronl at>
Zas <lmonin at>
Sergei Viznyuk <sviznyuk at>
Philippe Corbes <philippe.corbes at>
Charles Steinkuehler <charles at>
Adrian Bunk <bunk at>
Joseph <joseph at>
Andi Kleen (at suse)
10. TM note
Some names are trademarks of their owners:
Linux BSD BeOS QNX Unix WordStar Unox DOS Win Alpha BSE Atheos ELKS ARM AMD .. etc.
This diff is collapsed.
all: ../e3.asm e3.s
# $(AS) --defsym LINUX=1 --defsym ARMCPU=1 -a=e3arm.lst -gstabs e3.s -o e3.o
# $(AS) --defsym LINUX=1 --defsym ARMCPU=1 -a=emulayer.lst -gstabs emulayer.s -o emulayer.o
$(AS) --defsym LINUX=1 --defsym ARMCPU=1 e3.s -o e3.o
$(AS) --defsym LINUX=1 --defsym ARMCPU=1 emulayer.s -o emulayer.o
$(LD) e3.o emulayer.o -o e3arm
$(STRIP) e3arm
This diff is collapsed.
@ Copyright (C) 2002 Albrecht Kleine <>
@ This program is free software; you can redistribute it and/or modify
@ it under the terms of the GNU General Public License as published by
@ the Free Software Foundation; either version 2 of the License, or
@ (at your option) any later version.
@ This program is distributed in the hope that it will be useful,
@ but WITHOUT ANY WARRANTY; without even the implied warranty of
@ GNU General Public License for more details.
@ You should have received a copy of the GNU General Public License
@ along with this program; if not, write to the Free Software
@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
.global _INT
_INT: adr r12,.table
cmp r0,#((.endtable-.table)/8)
movhi pc,r14
add r12,r12,r0, lsl #3
mov r0,r1
mov r1,r2
mov r2,r3
mov r3,r4
mov r4,r5
mov r5,r6
mov pc,r12 @ jump
.table: swi 0x900000;mov pc,r14
swi 0x900001;mov pc,r14
swi 0x900002;mov pc,r14
swi 0x900003;mov pc,r14
swi 0x900004;mov pc,r14
swi 0x900005;mov pc,r14
swi 0x900006;mov pc,r14
swi 0x900007;mov pc,r14
swi 0x900008;mov pc,r14
swi 0x900009;mov pc,r14
swi 0x90000a;mov pc,r14
swi 0x90000b;mov pc,r14
swi 0x90000c;mov pc,r14
swi 0x90000d;mov pc,r14
swi 0x90000e;mov pc,r14
swi 0x90000f;mov pc,r14
swi 0x900010;mov pc,r14
swi 0x900011;mov pc,r14
swi 0x900012;mov pc,r14
swi 0x900013;mov pc,r14
swi 0x900014;mov pc,r14
swi 0x900015;mov pc,r14
swi 0x900016;mov pc,r14
swi 0x900017;mov pc,r14
swi 0x900018;mov pc,r14
swi 0x900019;mov pc,r14
swi 0x90001a;mov pc,r14
swi 0x90001b;mov pc,r14
swi 0x90001c;mov pc,r14
swi 0x90001d;mov pc,r14
swi 0x90001e;mov pc,r14
swi 0x90001f;mov pc,r14
swi 0x900020;mov pc,r14
swi 0x900021;mov pc,r14
swi 0x900022;mov pc,r14
swi 0x900023;mov pc,r14
swi 0x900024;mov pc,r14
swi 0x900025;mov pc,r14
swi 0x900026;mov pc,r14
swi 0x900027;mov pc,r14
swi 0x900028;mov pc,r14
swi 0x900029;mov pc,r14
swi 0x90002a;mov pc,r14
swi 0x90002b;mov pc,r14
swi 0x90002c;mov pc,r14
swi 0x90002d;mov pc,r14
swi 0x90002e;mov pc,r14
swi 0x90002f;mov pc,r14
swi 0x900030;mov pc,r14
swi 0x900031;mov pc,r14
swi 0x900032;mov pc,r14
swi 0x900033;mov pc,r14
swi 0x900034;mov pc,r14
swi 0x900035;mov pc,r14
swi 0x900036;mov pc,r14
swi 0x900037;mov pc,r14
swi 0x900038;mov pc,r14
swi 0x900039;mov pc,r14
swi 0x90003a;mov pc,r14
swi 0x90003b;mov pc,r14
swi 0x90003c;mov pc,r14
swi 0x90003d;mov pc,r14
swi 0x90003e;mov pc,r14
swi 0x90003f;mov pc,r14
swi 0x900040;mov pc,r14
swi 0x900041;mov pc,r14
swi 0x900042;mov pc,r14
swi 0x900043;mov pc,r14
swi 0x900044;mov pc,r14
swi 0x900045;mov pc,r14
swi 0x900046;mov pc,r14
swi 0x900047;mov pc,r14
swi 0x900048;mov pc,r14
swi 0x900049;mov pc,r14
swi 0x90004a;mov pc,r14
swi 0x90004b;mov pc,r14
swi 0x90004c;mov pc,r14
swi 0x90004d;mov pc,r14
swi 0x90004e;mov pc,r14
swi 0x90004f;mov pc,r14
swi 0x900050;mov pc,r14
swi 0x900051;mov pc,r14
swi 0x900052;mov pc,r14
swi 0x900053;mov pc,r14
swi 0x900054;mov pc,r14
swi 0x900055;mov pc,r14
swi 0x900056;mov pc,r14
swi 0x900057;mov pc,r14
swi 0x900058;mov pc,r14
swi 0x900059;mov pc,r14
swi 0x90005a;mov pc,r14
swi 0x90005b;mov pc,r14
swi 0x90005c;mov pc,r14
swi 0x90005d;mov pc,r14
swi 0x90005e;mov pc,r14
swi 0x90005f;mov pc,r14
swi 0x900060;mov pc,r14
swi 0x900061;mov pc,r14
swi 0x900062;mov pc,r14
swi 0x900063;mov pc,r14
swi 0x900064;mov pc,r14
swi 0x900065;mov pc,r14
swi 0x900066;mov pc,r14
swi 0x900067;mov pc,r14
swi 0x900068;mov pc,r14
swi 0x900069;mov pc,r14
swi 0x90006a;mov pc,r14
swi 0x90006b;mov pc,r14
swi 0x90006c;mov pc,r14
swi 0x90006d;mov pc,r14
swi 0x90006e;mov pc,r14
swi 0x90006f;mov pc,r14
swi 0x900070;mov pc,r14
swi 0x900071;mov pc,r14
swi 0x900072;mov pc,r14
swi 0x900073;mov pc,r14
swi 0x900074;mov pc,r14
swi 0x900075;mov pc,r14
swi 0x900076;mov pc,r14
swi 0x900077;mov pc,r14
swi 0x900078;mov pc,r14
swi 0x900079;mov pc,r14
swi 0x90007a;mov pc,r14
swi 0x90007b;mov pc,r14
swi 0x90007c;mov pc,r14
swi 0x90007d;mov pc,r14
swi 0x90007e;mov pc,r14
swi 0x90007f;mov pc,r14
swi 0x900080;mov pc,r14
swi 0x900081;mov pc,r14
swi 0x900082;mov pc,r14
swi 0x900083;mov pc,r14
swi 0x900084;mov pc,r14
swi 0x900085;mov pc,r14
swi 0x900086;mov pc,r14
swi 0x900087;mov pc,r14
swi 0x900088;mov pc,r14
swi 0x900089;mov pc,r14
swi 0x90008a;mov pc,r14
swi 0x90008b;mov pc,r14
swi 0x90008c;mov pc,r14
swi 0x90008d;mov pc,r14
swi 0x90008e;mov pc,r14
swi 0x90008f;mov pc,r14
swi 0x900090;mov pc,r14
swi 0x900091;mov pc,r14
swi 0x900092;mov pc,r14
swi 0x900093;mov pc,r14
swi 0x900094;mov pc,r14
swi 0x900095;mov pc,r14
swi 0x900096;mov pc,r14
swi 0x900097;mov pc,r14
swi 0x900098;mov pc,r14
swi 0x900099;mov pc,r14
swi 0x90009a;mov pc,r14
swi 0x90009b;mov pc,r14
swi 0x90009c;mov pc,r14
swi 0x90009d;mov pc,r14
swi 0x90009e;mov pc,r14
swi 0x90009f;mov pc,r14
swi 0x9000a0;mov pc,r14
swi 0x9000a1;mov pc,r14
swi 0x9000a2;mov pc,r14
swi 0x9000a3;mov pc,r14
swi 0x9000a4;mov pc,r14
swi 0x9000a5;mov pc,r14
swi 0x9000a6;mov pc,r14
swi 0x9000a7;mov pc,r14
swi 0x9000a8;mov pc,r14
swi 0x9000a9;mov pc,r14
swi 0x9000aa;mov pc,r14
swi 0x9000ab;mov pc,r14
swi 0x9000ac;mov pc,r14
swi 0x9000ad;mov pc,r14
swi 0x9000ae;mov pc,r14
swi 0x9000af;mov pc,r14
swi 0x9000b0;mov pc,r14
swi 0x9000b1;mov pc,r14
swi 0x9000b2;mov pc,r14
swi 0x9000b3;mov pc,r14
swi 0x9000b4;mov pc,r14
swi 0x9000b5;mov pc,r14
swi 0x9000b6;mov pc,r14
swi 0x9000b7;mov pc,r14
swi 0x9000b8;mov pc,r14
swi 0x9000b9;mov pc,r14
swi 0x9000ba;mov pc,r14
swi 0x9000bb;mov pc,r14
swi 0x9000bc;mov pc,r14
swi 0x9000bd;mov pc,r14
swi 0x9000be;mov pc,r14
swi 0x9000bf;mov pc,r14
swi 0x9000c0;mov pc,r14
swi 0x9000c1;mov pc,r14
swi 0x9000c2;mov pc,r14
swi 0x9000c3;mov pc,r14
swi 0x9000c4;mov pc,r14
swi 0x9000c5;mov pc,r14
swi 0x9000c6;mov pc,r14
swi 0x9000c7;mov pc,r14