Module handler for ARM CoPro
I've been developing a
module handler for Sprow's ARM CoPro. Firstly, there is a small small patch
to the ARM CoPro MOS to check for and run addition code in ROM at startup.
Then, a standard string of modules can be stored in the ARM CoPro's
reprogrammable ROM, with a small header to be recognised on startup.
WARNING! I ACCEPT NO RESPONSIBILITY FOR ANY DAMAGE OR INOPERABILITY
RESULTING TO YOUR ARM COPRO.
The file INSTALL.zip (100K) contains the INSTALL
program which should be run on the ARM CoPro with *INSTALL
. It
takes about 30-40 seconds to run, and then once the system reset, the
following extra code is present.
ARM OS 0.35
ARM CoPro OS patched to check for and enter code in ROM at &C8020000. If
the code has a standard ARM Tube ROM header, it is entered. If either '*'
key is pressed on Reset, extension code is not checked for, allowing you to
recover from any broken extension code with Ctrl-*-Break.
ROMHdr
Short header to be recognised by the patched ARM CoPro MOS.
MOS
Base core modular MOS. With this module in place all system functions can
be passed via modules in ROM or RAM. Redirects the hardware SWI vector to
allow additional or replacement SWI functions. Provides modular OS_CLI
handler to scan modules for *commands.
OS_CLI
OS_ClaimSWI
OS_ReleaseSWI
OS_PrettyPrint
*Help
Also provides Help strings for ARM CoPro MOS commands.
ModuleHandler
Provides core module and RMA handling functionality, SWI OS_Module and RM
commands. This allows module code to be interactively manipulated.
OS_Module
*Modules
*RMRun
Further extensions
With the MOS and ModuleHandler modules in place many RISC OS modules are
potentially usable. The module must be able to run on ARM-32, either 32-bit
code or 26/32-bit neutral. Bear in mind that the only hardware on the ARM
CoPro is the Tube interface - no VIDC, so the Wimp module won't do anything
useful.
I've almost got the Debugger module working, but it has some 26-bit
dependancies in it. I've got Z80Tube working and am working on providing the
services that 65Tube needs. Imagine doing *Config. Tube 6502
then Ctrl-Break into a super-fast 6502 CoProcessor!
Sample command output
>SYS "OS_PrettyPrint",CHR$27+CHR$1+" <params>"+CHR$13,0,"Quit"
Syntax: *Quit <params>
>*MODULES
No. Position Workspace Name
0 C8020040 00000000 MOS
1 C8020914 00000000 ModuleHandler
2 C8021244 00000000 Z80Tube
3 C80338D0 00FFFB28 Tube6502Emulator
>*Z80
Acorn BBC BASIC Version 2.20
(C) Copyright R.T.Russell 1983
>*HELP
Z80 MOS 1.10
ARM Tube MOS 0.35 (18 Jul 2008)
Module Handler 0.02 (02 May 2009)
Z80Tube 1.14 (13 Nov 2008) © 1991-2008 J.G.Harston
6502 Emulator 1.20 (18 May 1992) (64K Tube emulation)
ARM Tube OS 0.35
>*CPM
Acorn CP/M 2.2 - Bios 120
SJCCP version 1.40
A0>DIR
A: 6502-Z80 BBC : ANIMAL BBC : ANIMAL DAT : BBCBASIC COM
A: BBCBASIC TXT : CONVERT COM : CRC COM : CRCKLIST CRC
A: F-INDEX BBC : F-RAND0 BBC : F-RAND1 BBC : F-RAND2 BBC
A: F-RSER1 BBC : F-RSER2 BBC : F-RSTD BBC : F-WESER1 BBC
A: F-WESER2 BBC : F-WSER1 BBC : F-WSER2 BBC : F-WSRD BBC
A: MERGE BBC : READ ME : READDFS BBC : SORT BBC
A: SORTREAL BBC : FRED BBC : JIM BBC : SETCCP COM
A: JGHCCP SYS
Files
!BuildROM wr/R
!BuildROM! wr/R
FileSW/s wr/R
INSTALL/zip wr/R
Join wr/R
MkInstall wr/R
ModHand/s wr/R
MOS/s wr/R
ROMHdr/s wr/R
Authored by J.G.Harston
Last update: 02-May-2009