diff --git a/runtime/doc/os_risc.txt b/runtime/doc/os_risc.txt
new file mode 100644
index 0000000..04f9ba5
--- /dev/null
+++ b/runtime/doc/os_risc.txt
@@ -0,0 +1,323 @@
+*os_risc.txt*   For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by Thomas Leonard
+
+
+						*riscos* *RISCOS* *RISC-OS*
+This file contains the particularities for the RISC OS version of Vim.
+
+The RISC OS port is a completely new port and is not based on the old `archi'
+port.
+
+1.  File locations		|riscos-locations|
+2.  Filename munging		|riscos-munging|
+3.  Command-line use		|riscos-commandline|
+4.  Desktop (GUI) use		|riscos-gui|
+5.  Remote use (telnet)		|riscos-remote|
+6.  Temporary files		|riscos-temp-files|
+7.  Interrupting		|riscos-interrupt|
+8.  Memory usage		|riscos-memory|
+9.  Filetypes			|riscos-filetypes|
+10. The shell			|riscos-shell|
+11. Porting new releases	|riscos-porting|
+
+If I've missed anything, email me and I'll try to fix it.  In fact, even if I
+haven't missed anything then email me anyway to give me some confidence that it
+actually works!
+
+Thomas Leonard <tal197@ecs.soton.ac.uk>
+
+	[these URLs no longer work...]
+ Port homepage:	http://www.ecs.soton.ac.uk/~tal197/
+	or try:	http://www.soton.ac.uk/~tal197/
+
+==============================================================================
+							*riscos-locations*
+1. File locations
+
+The Vim executable and shared resource files are all stored inside the !Vim
+application directory.
+
+When !Vim is first seen by the filer, it aliases the *vi and *ex commands to
+run the command-line versions of Vim (see |riscos-commandline|).
+
+!Vim.Resources and !Vim.Resources2 contain the files from the standard Vim
+distribution, but modified slightly to work within the limits of ADFS, plus
+some extra files such as the window templates.
+
+User choices are read from `Choices:*' and are saved to `<Choices$Write>.*'.
+If you have the new !Boot structure then these should be set up already. If
+not, set Choices$Path to a list of directories to search when looking for
+user configuration files. Set Choices$Write to the directory you want files
+to be saved into (so your search patterns and marks can be remembered between
+sessions).
+
+==============================================================================
+							*riscos-munging*
+2. Filename munging
+
+All pathname munging is disabled by default, so Vim should behave like a
+normal RISC OS application now. So, if you want to edit `doc/html' then you
+actually type `*vi doc/html'.
+
+The only times munging is done is when:
+
+- Searching included files from C programs, since these are always munged.
+  See |[I|.
+  Note: make sure you are in the right directory when you use this
+	command (ie the one with subdirectories 'c' and 'h').
+
+- Sourcing files using |:so|.
+  Paths starting `$VIM/' are munged like this:
+
+  $VIM/syntax/help.vim  ->  Vim:syntax.help
+
+  Also, files ending in `.vim' have their extensions removed, and slashes
+  replaced with dots.
+
+Some tag files and script files may have to be edited to work under this port.
+
+==============================================================================
+							*riscos-commandline*
+3. Command-line use
+
+To use Vim from the command-line use the `*vi' command (or '*ex' for
+|Ex-mode|).
+
+Type `*vi -h' for a list of options.
+
+Running the command-line version of Vim in a large high-color mode may cause
+the scrolling to be very slow. Either change to a mode with fewer colors or
+use the GUI version.
+
+Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will
+freeze it, as usual for text programs.
+
+==============================================================================
+							*riscos-gui*
+4. Desktop use
+
+Limitations:
+
+- Left scrollbars don't work properly (right and bottom are fine).
+- Doesn't increase scroll speed if it gets behind.
+
+You can resize the window by dragging the lower-right corner, even though
+there is no icon shown there.
+
+You can use the --rows and --columns arguments to specify the initial size of
+the Vim window, like this: >
+
+  *Vi -g --rows 20 --columns 80
+
+The global clipboard is supported, so you can select some text and then
+paste it directly into another application (provided it supports the
+clipboard too).
+
+Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift
+when clicking Menu to paste (from the global clipboard).
+
+Dragging a file to the window replaces the CURRENT buffer (the one with the
+cursor, NOT the one you dragged to) with the file.
+
+Dragging with Ctrl held down causes a new Vim window to be opened for the
+file (see |:sp|).
+
+Dragging a file in with Shift held down in insert mode inserts the pathname of
+the file.
+
+:browse :w opens a standard RISC OS save box.
+:browse :e opens a directory viewer.
+
+For fonts, you have the choice of the system font, an outline font, the system
+font via ZapRedraw and any of the Zap fonts via ZapRedraw: >
+
+  :set guifont=
+<			To use the system font via the VDU drivers. Supports
+			bold and underline.
+>
+  :set guifont=Corpus.Medium
+<			Use the named outline font. You can use any font, but
+			only monospaced ones like Corpus look right.
+>
+  :set guifont=Corpus.Medium:w8:h12:b:i
+<			As before, but with size of 8 point by 12 point, and
+			in bold italic.
+			If only one of width and height is given then that
+			value is used for both. If neither is given then 10
+			point is used.
+
+Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name
+with '!' (or '!!' for double height), like this: >
+
+  :set guifont=!!
+<			Use the system font, but via ZapRedraw.  This gives a
+			faster redraw on StrongARM processors, but you can't
+			get bold or italic text. Double height.
+>
+  :set guifont=!script
+<			Uses the named Zap font (a directory in VimFont$Path).
+			The redraw is the same speed as for '!!', but you get
+			a nicer looking font.
+			Only the "man+" and "script" fonts are supplied
+			currently, but you can use any of the Zap fonts if
+			they are in VimFont$Path.
+			Vim will try to load font files '0', 'B', 'I' and 'IB'
+			from the named directory. Only '0' (normal style) MUST
+			be present. Link files are not currently supported.
+
+Note that when using ZapRedraw the edit bar is drawn in front of the character
+you are on rather than behind it. Also redraw is incorrect for screen modes
+with eigen values of 0. If the font includes control characters then you can
+get Vim to display them by changing the 'isprint' option.
+
+If you find the scrolling is too slow on your machine, try experimenting
+with the 'scrolljump' and 'ttyscroll' options.
+
+In particular, StrongARM users may find that: >
+
+  :set ttyscroll=0
+
+makes scrolling faster in high-color modes.
+
+=============================================================================
+							*riscos-remote*
+5. Remote use (telnet)
+
+I have included a built-in termcap entry, but you can edit the termcap file to
+allow other codes to be used if you want to use Vim from a remote terminal.
+
+Although I do not have an internet connection to my Acorn, I have managed to
+run Vim in a FreeTerm window using the loopback connection.
+
+It seems to work pretty well now, using '*vi -T ansi'.
+
+==============================================================================
+							*riscos-temp-files*
+6. Temporary files
+
+If Vim crashes then the swap and backup files (if any) will be in the
+directories set with the 'directory' and 'bdir' options.  By default the swap
+files are in <Wimp$ScrapDir> (ie inside !Scrap) and backups are in the
+directory you were saving to. Vim will allow you to try and recover the file
+when you next try to edit it.
+
+To see a list of swap files, press <F12> and type `*vi -r'.
+
+Vim no longer brings up ATTENTION warnings if you try to edit two files with
+the same name in different directories.
+
+However, it also no longer warns if you try to edit the same file twice (with
+two copies of Vim), though you will still be warned when you save that the
+datestamp has changed.
+
+==============================================================================
+							*riscos-interrupt*
+7. Interrupting
+
+To break out of a looping macro, or similar, hold down Escape in the
+command-line version, or press CTRL-C in the GUI version.
+
+==============================================================================
+							*riscos-memory*
+8. Memory usage
+
+Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on
+older machines then edit the !RunTxt and GVim files. I don't know what UnixLib
+does by default on these machines so I'm playing safe.
+
+It doesn't work at all well without dynamic areas, since it can't change its
+memory allocation once running. Hence you should edit `!Vim.GVim' and
+`!Vim.!RunTxt' to choose the best size for you. You probably need at least
+about 1400K.
+
+==============================================================================
+							*riscos-filetypes*
+9. Filetypes
+
+You can now specify that autocommands are only executed for files of certain
+types. The filetype is given in the form &xxx, when xxx is the filetype.
+
+Filetypes must be specified by number (eg &fff for Text).
+
+The system has changed from version 5.3. The new sequence of events is:
+
+- A file is loaded. |'osfiletype'| is set to the RISC OS filetype.
+- Based on the filetype and pathname, Vim will try to set |'filetype'| to the
+  Vim-type of the file.
+- Setting this option may load syntax files and perform other actions.
+- Saving the file will give it a filetype of |'osfiletype'|.
+
+Some examples may make this clearer:
+
+  Kind of file loaded	osfiletype	filetype ~
+  C code 'c.hellow'	Text (&fff)	C
+  LaTeX document	LaTeX (&2a8)	TeX
+  Draw document		DrawFile (&aff)	(not changed)
+
+==============================================================================
+							*riscos-shell*
+10. The shell
+
+- Bangs (!s) are only replaced if they are followed by a space or end-of-line,
+  since many pathnames contain them.
+
+- You can prefix the command with '~', which stops any output from being
+  displayed. This also means that you don't have to press <Enter> afterwards,
+  and stops the screen from being redrawn. {only in the GUI version}
+
+==============================================================================
+							*riscos-porting*
+11. Porting new releases to RISC OS
+
+Downloading everything you need:
+
+- Get the latest source distribution (see www.vim.org)
+- Get the runtime environment files (eg these help files)
+- Get the `extra' archive (contains the RISC OS specific bits)
+- Get the RISC OS binary distribution (if possible)
+
+
+Unarchiving:
+
+- Create a raFS disk and put the archives on it.
+- Un-gzip them
+- Un-tar them   (*tar xELf 50 archive/tar)
+
+
+Recompiling the sources:
+
+- Create c, s, and h directories.
+- Put all the header files in 'h'	     \
+- Put all the C files in `c'		     | And lose the extensions
+- Put the assembler file (`swis/s') in 's'   /
+- Rename all the files in `proto' to `h', like this:
+    raFS::VimSrc.source.proto.file/pro
+	  becomes
+    raFS::VimSrc.source.h.file_pro
+- In the files `h.proto' and `c.termlib', search and replace
+    .pro"
+       with
+    _pro.h"
+- Create a simple Makefile if desired and do '*make -k'
+  Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile
+- Save the binary as !Vim.Vim in the binary distribution
+
+
+Updating the run-time environment:
+
+- Replace old or missing files inside !Vim.Resources with the
+  new files.
+- Remove files in `doc' not ending in `/txt', except for `tags'.
+- Lose the extensions from the files in `doc'.
+- Edit the `doc.tags' file. Remove extensions from the second column: >
+	:%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/
+- Remove extensions from the syntax files. Split them into two directories
+  to avoid the 77 entry limit on old ADFS filesystems.
+- Edit `Vim:FileType' to match `*.c.*' as well as `*/c' and so on.
+  Add filetype checking too.
+- Edit `Vim:Menu' and remove all the keys from the menus: >
+	:%s/<Tab>[^ \t]*//
+<
+ vim:tw=78:ts=8:ft=help:norl:
