JGH::Develop.ARMCoPro.Modules Search

Module handler for ARM CoPro

ARM CoPro module handlerI'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