Commit 3c0f89af authored by Dmitry Bogatov's avatar Dmitry Bogatov

Import Upstream version 2.61

parent 4aab39ab
...@@ -3,7 +3,7 @@ for any purpose without royalty or fees in accordance with the terms of the ...@@ -3,7 +3,7 @@ for any purpose without royalty or fees in accordance with the terms of the
copyright. copyright.
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Copyright (c) 2000,01,02 Albrecht Kleine Copyright (c) 2000-2004 Albrecht Kleine
All rights reserved. All rights reserved.
You may distribute under the terms of the GNU General Public License. You may distribute under the terms of the GNU General Public License.
......
Mon Jan 3 18:00:48 2005 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm, e3.h: continued 64 bit version, i. e.
fixed bugs in commandline reading and numerics
-e3.asm:added push ecx / pop ecx pair to save register ECX
during the Wait4 system call:
Linux kernel 2.6.8 seems to need that (unlike 2.6.5)
This crashed sed filtering, e.g. by ^KP in WS mode.
#199
***** released as v2.6.1 *****
-------------------------------------------------------------
Mon Dec 27 11:43:41 2004 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm, e3.h, Makefile: prepared e3.asm for generating
64 bit files by using the YASM 0.4 assembler for the
AMD-64 CPU (Linux only.)
-The AMD-64 code is built from e3.asm by running
sed converter script "e3_yasm_yasm64.sed"
This script is now part of e3 distribution archive.
*** Use it by entering "make yasm64" ***
#198
-------------------------------------------------------------
Sun Oct 03 17:00:00 2004 Albrecht Kleine <kleine@ak.sax.de>
- e3.asm, Makefile: prepared e3.asm for YASM assembler.
Due ugly problems in jecxz op by "near jmp" vs "short jmp"
we need a sed converter script: so added file
"e3_nasm_yasm.sed" to distribution
*** Use it by entering "make yasm" ***
#197
-------------------------------------------------------------
Sun Jun 27 21:34:00 2004 Albrecht Kleine <kleine@ak.sax.de>
e3.asm: clean up for next release
#196
***** released as v2.6.0 *****
-------------------------------------------------------------
Sun Jun 18 19:45:00 2004 Albrecht Kleine <kleine@ak.sax.de>
e3.asm: trial for runtime detection of UTF-8 console
(switch via %ifdef UTF8RTS) ** not yet continued **
#195
-------------------------------------------------------------
Fri Jun 18 21:14:55 2004 Albrecht Kleine <kleine@ak.sax.de>
e3.asm: optimizing previous builds
#194
-------------------------------------------------------------
Thu Jun 3 20:50:17 2004 Albrecht Kleine <kleine@ak.sax.de>
e3.asm,e3.h: special cursor control, switch it via
%define NEW_CURSOR_MGNT in e3.h
see also:
/usr/src/linux/Documentation/VGA-softcursor.txt
#192,#193
-------------------------------------------------------------
Thu Jun 3 20:50:17 2004 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm: added initial UNICODE UTF-8
stuff via checking the bits 7 and 8
#190,#191
-------------------------------------------------------------
Mon Apr 12 09:44:27 2004 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm: for easier line input just added some
readline edit functions in InputString:
home / end / insert / delete / go_left / go_right
-Makefile: removed default usage of "gzexe":
seems to be broken
#189
***** released as v2.5 *****
-------------------------------------------------------------
Sun Apr 4 21:29:07 2004 Albrecht Kleine <kleine@ak.sax.de>
-e3.h,e3.asm: make e3/OpenBSD work again by adding
some ELF file specials needed for OpenBSD version 4.3.
Many thanks to Benjamin Pineau!
#188
-------------------------------------------------------------
Fri Nov 14 00:00:00 2003 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm: a patch for Scott Swanson's vt420
use via %ifdef VT420SPECIAL
#187
-------------------------------------------------------------
Fri Aug 09 00:00:00 2003 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm: check file name linkage also in dynamic linked
file versions
#186
-------------------------------------------------------------
Mon Apr 21 18:22:36 2003 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm: bugfix (a certain combination of
sed-piping followed by UNDO operation could cause a
crash with core dump)
Many thanks for bug report to:
basti at a181213.studnetz.uni-leipzig.de
#185
***** released as v2.43 *****
-------------------------------------------------------------
Mon Mar 24 17:17:17 2003 Albrecht Kleine <kleine@ak.sax.de>
- e3-16.asm: fixed bug in IsShowBlock
replaced "cmp dword ...." with "cmp word ....."
This makes e3-16 running on elks at old 8086 PC.
- e3-16.asm: LESSWRITEOPS are now switched on by default.
- e3.asm: added fchmod call to prevent file
permissions modified by umask
(was bug report on freshmeat site)
#184
***** released as v2.42 *****
-------------------------------------------------------------
Sat Mar 1 10:00:00 2003 Albrecht Kleine <kleine@ak.sax.de>
- e3.asm: fixed heavy bug in FreeBSD version of e3,
(core dump with newer FreeBSD kernels due ugly
workaround in e3 / now replaced by a real solution
for sed child program piping, see also:
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/47505 )
Thanks to joseph at randomnetworks dot com for
his patience and assistance.
#183
***** released as v2.41 *****
-------------------------------------------------------------
Tue Oct 8 20:55:00 2002 Albrecht Kleine <kleine@ak.sax.de>
- e3.asm: fixed bug in Pico mode
(repeated search&replace could hang e3:
Thanks for bug report to Roy Sutton!)
- added NO_AUTO_INDENT assemble time option
#182
***** released as v2.4 *****
-------------------------------------------------------------
Sat Oct 5 18:13:13 2002 Albrecht Kleine <kleine@ak.sax.de>
- NEW: added e3.s to the e3 distribution
(NATIVE StrongARM assembler code for gnu assembler)
Also included helper macros and emulayer.s.
Also adjusted Makefile.
- e3-16.asm: added a %define for bypassing BIOS int 10h,
function 1302h. Very slow, but running on some
very old 1980's PC.
#181
-------------------------------------------------------------
Sat Sep 14 15:44:02 2002 Albrecht Kleine <kleine@ak.sax.de>
e3.asm/e3.h: initial assembler version for
the ARM CPU produced (for gnu-as,gnu-ld)
and running on the Zaurus PDA
(control by %define ARMCPU)
Wed Jul 31 00.00.00 2002 Albrecht Kleine <kleine@ak.sax.de>
e3-16.asm: changed some opcodes to pure 16 bit
e.g. replaced pusha with a sequence of
push ax,push bx,.... etc for running on 8088 CPU.
#180
-------------------------------------------------------------
Sun May 19 17:30:59 2002 Albrecht Kleine <kleine@ak.sax.de>
e3.asm: bug fixed: search in Pico mode could
cause inf-loop if string was not found
MANY thanks to Robin Green!
#179
***** released as v2.33 *****
-------------------------------------------------------------
Thu May 2 09:01:11 2002 Albrecht Kleine <kleine@ak.sax.de>
-e3c.c, e3c/Makefile : patch for running on PDAs
running Linux on the StrongARM CPU
#178a
***** ARM binary released as v2.32 *****
-------------------------------------------------------------
Sat Apr 20 21:44:31 2002 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm: some adjustments to assemble again in Win9x
-e3-16.asm: added ^QI key (go line#)
to the ELKS and DOS versions
-Makefile, e3.asm, e3.h changed variable errno to ErrNo
for better linking to libc, if desired.
Now this is also in FreeBSD possible,
see build #169 for make details.
#178
***** released as v2.31 *****
-------------------------------------------------------------
Tue Apr 16 20:31:28 2002 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm refined cursor position after vi's p and P cmds
-e3.asm vi mode: now also cmd x and X pasteable
-e3.asm bugfix in WS ^QY (introduced in #175
due vi command D changing)
-e3-16.asm: removed most of useless screen redrawing
for the ELKS version
#177
-------------------------------------------------------------
Sat Apr 13 20:57:41 2002 Albrecht Kleine <kleine@ak.sax.de>
-e3-16.asm bugfix (^KR did not work in ELKS)
added special handling code of lseek
offset (32 bit arg #2) via I/O-pointer
-e3-16.asm bugfix (^KV did not work in ELKS and DOS)
(Tnx for report to Tim Pearce)
-e3.asm [libc versions] fixed bug in error handling:
now using extern [_errno]
-e3.asm added UNDO information collector for Emacs ^T
#176
-------------------------------------------------------------
Wed Apr 10 18:11:42 2002 Albrecht Kleine <kleine@ak.sax.de>
-e3.asm added command dw (delete word) in vi mode
(by Matthias's suggestion)
-e3.asm after pasting now changing cursor position
by using [EmaKiSize] (old was call CountToLineEnd)
-e3.asm vi command mode
added cursor left motion after D command
-e3.asm bugfix: vi command r was not undoable
(Tnx for report to Tim Pearce)
#175
-------------------------------------------------------------
Sun Apr 7 19:30:36 2002 Albrecht Kleine <kleine@ak.sax.de> Sun Apr 7 19:30:36 2002 Albrecht Kleine <kleine@ak.sax.de>
e3-16: added color support for e3-16/ELKS (*) , e3-16: added color support for e3-16/ELKS (*) ,
......
...@@ -3,12 +3,13 @@ ...@@ -3,12 +3,13 @@
OS=LINUX OS=LINUX
#OS=BEOS #OS=BEOS
#OS=FREEBSD #OS=FREEBSD
#OS=OPENBSD
#OS=QNX #OS=QNX
#OS=ATHEOS #OS=ATHEOS
#OS=W32 ** please use a separate make.bat for W9x ** #OS=W32 ** please use a separate make.bat for W9x **
# Set this to gzexe or upx if you want compression # Set this to gzexe or upx if you want compression
COMPRESS=gzexe # COMPRESS=gzexe
# 2. edit dest dir prefix if you want.... # 2. edit dest dir prefix if you want....
...@@ -79,20 +80,24 @@ endif ...@@ -79,20 +80,24 @@ endif
# next three are for testing purpose: linking w libc # next three are for testing purpose: linking w libc
statc: statc:
$(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -DLINUX -DLIBC -D$(EXMODE) $(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -D$(OS) -DLIBC -D$(EXMODE)
ld -s -static -o e3statc e3.o -lc ld -s -static -o e3statc e3.o -lc
dync: dync:
$(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -DLINUX -DLIBC -DDYN -D$(EXMODE) $(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -D$(OS) -DLIBC -DDYN -D$(EXMODE)
gcc e3.o -o e3dync gcc e3.o -o e3dync
# strip e3dync # strip e3dync
dync2: dync2:
$(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -DLINUX -DLIBC -DDYN -D$(EXMODE) ifeq ($(OS),LINUX)
$(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -D$(OS) -DLIBC -DDYN -D$(EXMODE)
ld -s -m elf_i386 -o e3dync2 e3.o \ ld -s -m elf_i386 -o e3dync2 e3.o \
-lc -dynamic-linker /lib/ld-linux.so.2 \ -lc -dynamic-linker /lib/ld-linux.so.2 \
/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o
else
$(NASM) $(AFLAGS) -o e3.o e3.asm -l e3.lst -D$(OS) -DLIBC -DDYN -D$(EXMODE)
ld -m elf_i386 -o e3dync2 e3.o -lc -e _start /usr/lib/crt1.o
endif
# next for running in gnu debugger # next for running in gnu debugger
debug: $(ASOURCES) Makefile debug: $(ASOURCES) Makefile
...@@ -105,6 +110,34 @@ debug: $(ASOURCES) Makefile ...@@ -105,6 +110,34 @@ debug: $(ASOURCES) Makefile
ln -sf e3 e3vi ln -sf e3 e3vi
ln -sf e3 e3ne 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 \
| yasm -f elf -p nasm $(AFLAGS) -l e3.lstyasm -o e3.o -DLINUX -DSED -DYASM
ld -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 \
| yasm -m amd64 -f elf -p nasm $(AFLAGS) -l e3.lstyasm64 -o e3.o -DLINUX -DSED -DYASM -DAMD64
ld -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
# selftest, linux only, assembled with a special option for using an input pipe # selftest, linux only, assembled with a special option for using an input pipe
test: test:
ifeq ($(OS),LINUX) ifeq ($(OS),LINUX)
...@@ -164,6 +197,12 @@ else ...@@ -164,6 +197,12 @@ else
install -m 644 e3.man $(MANDIR)/e3.$(MANSEC) install -m 644 e3.man $(MANDIR)/e3.$(MANSEC)
endif endif
armlinux: e3
@cd armlinux && make all
clean: clean:
rm -f e3*.o e3*.lst e3 e3em e3pi e3vi e3ws e3ne *~ \ rm -f e3*.o e3*.lst e3 e3em e3pi e3vi e3ws e3ne *~ \
PIPE_IN e3test~ e3test e3dync e3dync2 e3statc PIPE_IN e3test~ e3test e3dync e3dync2 e3statc \
armlinux/*.o armlinux/e3arm
This diff is collapsed.
Some notes on UTF-8 for the Linux/ASM-version:
1.
By default now e3 does does support UTF-8 coding of unicode
characters like this: α (should be a greek alpha).
2.
You could disable UTF-8 support in e3 by editing e3.h at line 16:
from
%define UTF8 ;for UTF8 console or xterm e.g. @ Suse 9.1
to
;;; %define UTF8 ;for UTF8 console or xterm e.g. @ Suse 9.1
and run 'make' again.
3.
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.
4.
If you 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.
5.
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.)
6.
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.6.0-UTF8 GPL © 2000-04
vs.
MicroEditor e3 v2.6.0 GPL (C) 2000-04
BTW a runtime detection of UTF-8 console is planned, but not yet ready to use.
Enjoy!
Albrecht,
Jun/29/2004
AS=arm-linux-as
LD=arm-linux-ld
STRIP=arm-linux-strip
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 <kleine@ak.sax.de>
@
@ 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
@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@ 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.
@
@----------------------------------------------------------------------
.text
.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
swi 0x9000c8;mov pc,r14
swi 0x9000c9;mov pc,r14
swi 0x9000ca;mov pc,r14
swi 0x9000cb;mov pc,r14
swi 0x9000cc;mov pc,r14
swi 0x9000cd;mov pc,r14
swi 0x9000ce;mov pc,r14
swi 0x9000cf;mov pc,r14
swi 0x9000d0;mov pc,r14
swi 0x9000d1;mov pc,r14
swi 0x9000d2;mov pc,r14
swi 0x9000d3;mov pc,r14
swi 0x9000d4;mov pc,r14
swi 0x9000d5;mov pc,r14
swi 0x9000d6;mov pc,r14
swi 0x9000d7;mov pc,r14
swi 0x9000d8;mov pc,r14
swi 0x9000d9;mov pc,r14
swi 0x9000da;mov pc,r14
swi 0x9000db;mov pc,r14
swi 0x9000dc;mov pc,r14
swi 0x9000dd;mov pc,r14
swi 0x9000de;mov pc,r14
swi 0x9000df;mov pc,r14
swi 0x9000e0;mov pc,r14
swi 0x9000e1;mov pc,r14
swi 0x9000e2;mov pc,r14
swi 0x9000e3;mov pc,r14
swi 0x9000e4;mov pc,r14
swi 0x9000e5;mov pc,r14
swi 0x9000e6;mov pc,r14
swi 0x9000e7;mov pc,r14
swi 0x9000e8;mov pc,r14
swi 0x9000e9;mov pc,r14
swi 0x9000ea;mov pc,r14
swi 0x9000eb;mov pc,r14
swi 0x9000ec;mov pc,r14
swi 0x9000ed;mov pc,r14
swi 0x9000ee;mov pc,r14
swi 0x9000ef;mov pc,r14
swi 0x9000f0;mov pc,r14
swi 0x9000f1;mov pc,r14
swi 0x9000f2;mov pc,r14
swi 0x9000f3;mov pc,r14
swi 0x9000f4;mov pc,r14
swi 0x9000f5;mov pc,r14
swi 0x9000f6;mov pc,r14
swi 0x9000f7;mov pc,r14
swi 0x9000f8;mov pc,r14
swi 0x9000f9;mov pc,r14
swi 0x9000fa;mov pc,r14
swi 0x9000fb;mov pc,r14
swi 0x9000fc;mov pc,r14
swi 0x9000fd;mov pc,r14
swi 0x9000fe;mov pc,r14
swi 0x9000ff;mov pc,r14
.endtable:
@-------
@
.global _DIV
@ this code is not GPL, but free
@ expects divisor in r10 and divident in r9
@ returns quotient in r12 and remainder in r9
@ uses r11
_DIV: MOV r11,#1
.div1: CMP r10,#0x80000000 @ shift divisor left until top bit set
CMPCC r10,r9 @ ...or divisor>divident
MOVCC r10,r10,ASL#1 @ shift divisor left if required
MOVCC r11,r11,ASL#1 @ shift r11 left if required
BCC .div1 @ repeat whilst more shifting required
MOV r12,#0 @ ip used to store result
.div2: CMP r9,r10 @ test for possible subtraction
SUBCS r9,r9,r10 @ subtract if divident>divisor
ADDCS r12,r12,r11 @ put relivant bit into result
MOVS r11,r11,LSR#1 @ shift control bit
MOVNE r10,r10,LSR#1 @ halve unless finished
BNE .div2 @ loop if there is more to do
@ remainder r9
@ result in r12
mov pc,r14
@-------
@--------------------------------------------------------------------
@
@ Copyright (C) 2002 Albrecht Kleine <kleine@ak.sax.de>
@
@ 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
@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@ 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.
@
@----------------------------------------------------------------------
.equ ARMCPU, 1