Skip to content

gerph/riscos64-status

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RISC OS 64 porting status

This repository contains information about the status of RISC OS 64 ports of modules.

RISC OS components

Built components

Some of the absolutes and modules which have been ported can be found within this repository.

  • The rm32 directory contains the 32-bit version of modules.
  • The rm64 directory contains the 64-bit version of modules.
  • The aif32 directory contains the 32-bit version of absolutes.
  • The aif64 directory contains the 64-bit version of absolutes.

Absolutes and modules which are in the process of being created as C code may exist in both directories but may have incomplete implementations.

The files within this repository have rudimentary tess applied to them; we test absolute by trying to execute it (if we can) and each module by trying to load it. This is limited, but it proves that the components at least start.

Current status

The following tables show the status of each module.

  • Lang indicates the RISC OS Classic implementation
  • Filetype indicates the filetype (for disc based components)
  • C-State indicates whether there is a port to C (for Asm components)
  • 64-state indicates whether the port works in 64-bit.

ROM modules

Name Lang C-state 64-state
UtilityModule Asm
IRQ Asm
TimerManager Asm
Podule Asm
IIC Asm
NVRAMHW Asm
Conversions Asm
OSSWIs Asm
EvaluateExpression Asm
SystemVars Asm
FileTypes Asm Works Works
FPEmulator Asm
SharedCLibrary C -
UnSqueezeAIF Asm
AppPatcher Asm
DiagnosticDump C -
CFrontDemangler C -
ReadLine Asm Works Partial1
CLIV Asm
VideoTTX C -
VideoSW Asm
VideoHWVIDC Asm
VideoHWVF Asm
VideoGuard Asm
OSCommands Asm In progress In progress
FSCommands Asm
ModuleCommands Asm Works2 Works2
ARM Asm
BufferManager Asm In progress Built3
Debugger Asm Works4 Works4
RTC Asm Works Partial1
DMAManager Asm
RTCAdjust Asm
RTCHW Asm
OSPointer Asm
Hourglass Asm Partial5
Portable Asm Prototype works Prototype works
FileSwitch Asm
Squash Asm/C
ResourceFS Asm
ResourceFiler Asm
Messages Asm
MessageTrans Asm Works6 Works6
FSLock Asm
TerritoryManager Asm
UK Asm
International Asm
SerialDeviceDriver Asm
SerialDeviceSupport Asm
Mouse Asm
SerialMouse Asm
PS2Driver Asm
InternationalKeyboard Asm
KeyInput C - Built
FileCore Asm
ADFS Asm
ADFSFiler Asm
RamFS Asm
RAMFSFiler Asm
CDFS Asm
CDFSFiler C -
DOSFS C -
SystemDevices Asm
PipeFS Asm
AIF Asm
TransientUtility Asm
BASIC Asm In progress 7
BASIC64 Asm
BASICTrans Asm
Obey Asm Complete8
DDEUtils Asm
PathUtils C - Works
SysLog C -
BootCommands C -
GameModes Asm
ScreenModes Asm
ScreenBlanker Asm
ScrSaver C -
SoundDMA Asm
SoundChannels Asm
WaveSynth Asm
StringLib Asm
Percussion Asm
SoundScheduler Asm
SharedSound Asm
SystemBell Asm Works Works
DeviceFS Asm
ParallelDeviceDriver Asm
ColourTrans Asm
Draw Asm
SpriteExtend Asm/C
ColourMap C -
BlendTable C - Built
InverseTable Asm
DrawFile C -
FontMap C -
ZLib C - Built
PNG C -
ROMFonts Asm
FontManager Asm
SuperSample Asm
ImageFileConvert C -
CompressJPEG C -
ConvertPNG C -
ConvertBMP C -
ConvertGIF C -
ConvertICO C -
ConvertPNM C -
ConvertSprite C -
ConvertSun C -
ConvertXBM C -
ConvertPCX C -
ConvertClear C -
ImageFileRender C - Works
ImageFileRender_Artworks C -
Zipper C -
PrinterBuffer Asm Works Works
PDriver Asm
PDriverDP Asm
PDumperSupport Asm
PDumper24 Asm
PDumperCX Asm
PDumperDM Asm
PDumperE2 Asm
PDumperIW Asm
PDumperLJ Asm
PDriverPS Asm
MakePSFont Asm
RemotePrinterSupport C -
RemotePrinterMessages Asm
WindowManager Asm/C
FilterManager Asm
RedrawManager Asm
Desktop Asm
IconBorderPlain C -
IconBorderRound C -
TaskManager Asm
ShellCLI Asm
DisplayManager Asm
DragASprite Asm
DragAnObject Asm
Filer Asm/C
FilerSWIs Asm
Filer_Action C -
Free Asm
Pinboard Asm
ClipboardHolder C -
WindowScroll C -
ColourPicker C -
TaskWindow Asm
NetI Asm
NetFS Asm
NetStatus Asm
NetFiler Asm
NetPrint Asm
MbufManager Asm
Internet C -
InetServices C -
Resolver C -
MimeMap C -
InternetTime C -
InetConfigure C -
DHCPClient C -
ZeroConf C -
RouterDiscovery C -
Freeway C -
FreewayHosts C -
ShareFS C -
LanManFS C -
Toolbox C -
Window C -
Menu C -
Iconbar C -
ColourDbox C -
ColourMenu C -
DCS C -
FileInfo C -
FontDbox C -
FontMenu C -
PrintDbox C -
ProgInfo C -
SaveAs C -
Scale C -
GDivider C -
ToolAction C -
TextGadgets C -
ImageFileGadget C -
CDFSResources Asm
CDFSdriver Asm
CDFSSoftATAPI Asm
CDFSSoftChinonEESOX Asm
CDFSSoftHitachiEESOX Asm
CDFSSoftPhilipsEESOX Asm
CDFSSoftSonyEESOX Asm
CDFSSoftToshibaEESOX Asm
LegacyBBC Asm
LegacyScreen Asm
BBCEconet Asm
SpriteUtils Asm Built9 Built9
OwnerBanner Asm Started10 Started10
IRQUtils Asm
WindowUtils Asm
CallASWI Asm
BootNet Asm
AUNMsgs Asm
!Alarm BASIC
LibraryHelp C - Works
ErrorLog C - Built

New ROM modules

Name C-state 64-state
SystemVarsDefaults Works Works

System modules

Name Lang C-state 64-state
RateTracker C - Built

(to be updated)

Additional modules

Name Lang C-state 64-state
IconBorderBeveled C - Built
IconBorderCrossy C - Built
IconBorderFob C - Built
IconBorderPlain C - Built
IconBorderPlainPopping C - Built
IconBorderSkins C - Built

ROM resources

Name Filetype Lang C-state 64-state
BootMenu Absolute C - Partial1112
Repeat Absolute C -

Library files

Name Filetype Lang C-state 64-state
ForHooks Absolute C - Built
ImgConvert Absolute C - Built
MiniJTran Absolute C - Built
AddApp Utility Asm
AppSize Utility Asm
CDReinit Utility Asm
ClrMonitor Absolute C - Built
Do Utility Asm
FontChange BASIC Script
ForHooks Absolute C - Built
HOff BASIC Script
HOn BASIC Script - Built
IfThere Utility Asm
LoadCMOS Absolute C - 13
MD5Hash Absolute C - Built
MiniGZip Absolute C - 14
MiniGrep Absolute C - Built
MiniUnzip Absolute C - Built
MiniZip Absolute C - Built
Repeat Absolute C - 15
SafeLogon Absolute C - Built
ScanLibs BASIC Script - Built
SysPaths Absolute C - 13
X Utility Asm

Boot utilities

Name Filetype Lang C-state 64-state
AddToRMA Utility Asm
BandLimit Absolute C - Built
BootLog Module C - Built
BootRun Obey Script
BootVars Absolute C - 13
CheckMouse Absolute C - Built
DeskCheck BASIC Script
DeskRun Obey Script
Desktop Desktop Script
ErrorLog Module C - Built
FileCoreCheck Absolute C - 15
FreePool Utility Asm
HWScan Absolute C -
LibraryHlp Module C - Works
MemFix Module Asm
PatchApp Module C -
SetChoices Obey Script
ShrinkRMA Utility Asm
Softload Absolute C -
UnplugTbox BASIC Script -
VProtect Module Binary

Libraries

Name Lang C-state 64-state
C library C/Asm - Partial16
OSLib DSL/Asm - Partial17
Base64 C - Exports
ANTMemLib C -
AOFLink C - 18
Asm Asm
AsmDebug Asm
Base64 C - Exports
CLX C - Exports
Configure C - 19
DES C - Exports
Desk C -
DeskLib C -
FindResolver C - 11
Fortify C - Exports
GResolve C - 11
GetOpt C - Exports
IFCLib C - Exports
INIRead C - Exports
Interact C - Exports
Interfaces C - 11
JBacktrace C - 20
JavaScript C -
LongLong C -
MD5 C - Exports
MemCheck C - 20
MiniDump C -
ModMalloc C -
ModuleTask Asm -
ModuleWrap Asm -
PBTS C -
PlainArgv C -
RISC_OSLib C -
RISC_OSLibSA C -
ROLib C - Exports
RegExp C - Exports
Resolver C - 11
SCLStubsG C - 20
SHA1 C - Exports
SQLite C -
Support C -
TCPIPLibs C -
TGRlib C -
TIFF C -
TaskWindow C - 19
Throwback C - Exports
URLFetch C - Exports
WebImage C -
WimpKeyName C - Exports
Zipper C - Exports
mDNSCore C - Exports

Tools

The tools for developing 64-bit components need to be created. The table below shows information about various tools and their support:

  • Tool: Describes the intent of the tool.
  • Name: The particular variant of the tool described.
  • Lang: The implementation language (if relevant).
  • C-state: The status of the RISC OS implementation for 32bit.
  • 64-state: The status of the RISC OS implementation for 64bit.
  • Linux: The status of a Linux version of the tool.
  • Mac: The status of the Mac version of the tool.
  • Windows: The status of the Windows version of the tool.

Primary toolchain

Tool Name Lang C-state 64-state Linux Mac Windows
C Compiler cc (Norcroft) C - N/A21 N/A N/A N/A
C Compiler gcc (GCC) C N/A22 Works23 Via Docker Via WSL?
C Compiler tcc C N/A24 No Works24
C++ Compiler c++ (Norcroft) C - N/A2125 N/A N/A N/A
Assembler objasm (Norcroft) C - N/A21 N/A N/A N/A
Assembler gas (GCC) C N/A26 Works27 Via Docker Via WSL?
Linker link (Norcroft) C - N/A21 N/A N/A N/A
Linker ld (BinUtils) C N/A28 Works29 Via Docker Via WSL?
Lib maker libfile (Norcroft) C - N/A21 N/A N/A N/A
Lib maker makealf C - N/A30 N/A N/A N/A
Lib maker ar (BinUtils) C N/A31 Works32 Via Docker Via WSL?
Module header cmhg (Norcroft) C - N/A2133 N/A N/A N/A
Module header cmunge C - Functional34 Works Works N/A
Make tool amu (Norcroft) C - N/A21 N/A N/A N/A
Make tool make (GNU) C N/A35 Works35 Works35 Via WSL?
AOF-to-C aoftoc (Norcroft) C - N/A21 N/A N/A N/A
Bin-to-AOF binaof (Norcroft) C - N/A21 N/A N/A N/A
Decode AOF decaof (Norcroft) C - N/A21 N/A N/A N/A
Code compress squeeze (Norcroft) C - N/A2136 N/A N/A N/A
Code compress modsqz (Norcroft) C - N/A2137 N/A N/A N/A

Additional tools

Tool Name Lang C-state 64-state Linux Mac Windows
Perl perl (5.001) C - Works38
Detokeniser basicdetokenise C -
Tokeniser basictokenise Perl Works Works
Parser gen bison C - Built39
OSLib gen defmod C - N/A40
OSLib gen oslib parser Python Works40 Works40
Lex analyser flex C - Built41
Header maker hdrtoh Perl
Cat file kitten C - Works42
Mod decoder modservices C - Works43
Stream edit sed C - Built44
Version Trans vtranslate C - Works45

The Docker build environment provides the build tooling for 32bit and 64bit systems. The environment is functional as a tooling environment for building applications, utilities and modules. It currently uses GCC 12 (crosstool-NG-1.26.0).

Norcroft tools

This section lists the build system components from the regular Norcroft toolchain used on RISC OS, and how they have been addressed with the 64-bit world.

  • amu - make tool

    Makefile tools can use the standard GNU make. Or RISC OS AMU if necessary.

  • cc - C compiler

    Norcroft is not necessary; GNU gcc will work fine. CLI transform can be used to manipulate the command line to handle RISC OS style filenames.

  • objasm - Assembler

    Norcroft is not necessary; GNU as will work fine. However, as has ugly syntax, so a wrapper can be provided which transforms objasm syntax into as assembler.

  • link - Linker

    Norcroft is not necessary; GNU ld will work fine, with a suitable linker script. Function signatures can be added with post-processing. Run time relocation can be added as necessary.

  • cmhg - Module header generator

    Norcroft is not necessary; CMunge can be used, with suitable modifications.

    Outstanding issues: Not all interfaces implemented yet.

  • squeeze/modsqz - binary compressor

    Not required, as disk space is cheap, and transmission time is low.

Services

  • RISC OS Pyromaniac demo shell - example RISC OS environment.

    Available in 32bit and 64bit variants, with example applications present.

  • RISC OS Build service - API for building RISC OS applications.

    Can run RISC OS Pyromaniac in 32-bit and 64-bit environments, allowing testing of built RISC OS 64-bit utilities, absolutes and modules.

Footnotes

  1. Vector claims are not supported yet in RISC OS Pyromaniac or CMunge. 2

  2. CMunge does not support help code yet. 2

  3. Buffer vectors InsV, RemV, CnPV have very poor interfaces, which should not be propagated into RISC OS 64.

  4. Debugger works in 32bit and 64bit, but doesn't decode AArch64. 2

  5. Although the base is in C, the generated sections are in assembler.

  6. Missing dictionary calls. 2

  7. Being worked on by Steve Revill.

  8. Completed by Julie Stamp.

  9. Does not support the vector handling yet. 2

  10. Only the text part of the banner is currently implemented. 2

  11. Network libraries are not currently implemented, so no networking is available. 2 3 4 5

  12. The support library doesn't currently build for 64-bit. 2 3

  13. Requires ZLib library.

  14. The system() call is not currently implemented for 64-bit. 2

  15. C library has been reimplemented, using open source and custom components.

  16. Most OSLib SWI interfaces have been implemented and exported, although some are not functional.

  17. Requires Toolbox libraries. 2

  18. Isn't relevant for AArch64? 2 3

  19. The Norcroft toolchain only builds 32-bit binaries, so it is not useful to port this to RISC OS 64. As other compilers exist for AArch64 code, it is more sensible to use them instead of updating the aging Norcroft toolchain. 2 3 4 5 6 7 8 9 10 11 12

  20. GCC has not been ported to RISC OS 64.

  21. The riscos64-cc tool has been created as a wrapper around gcc which sets up the necessary environment for building RISC OS 64 binaries.

  22. TCC has not been ported to RISC OS 64. It can be compiled for macOS and will create code suitable for use on RISC OS 64. 2

  23. CFront hasn't even been attempted, as it is ancient and doesn't really support modern C++. It also doesn't built itself with C++ compilers.

  24. GAS has not been ported to RISC OS 64. GAS has an ugly syntax, but can be used to build AArch64 binaries on other platforms.

  25. The riscos64-objasm tool has been created as a wrapper around objasm2gas and as which translates sources in objasm format to those that can be used by as, as ObjAsm is a much more familiar format for RISC OS users.

  26. ld has not been ported to RISC OS 64.

  27. MakeALF only operates on ALF files so has not been ported to RISC OS 64.

  28. ar has not been ported to RISC OS 64.

  29. The riscos64-libfile tool has been created as a wrapper around ar, which has libfile syntax to create libraries for RISC OS 64 (as a syntactic sugar).

  30. CMHG constructs the module header from binary code fragments, which would need to have significant changes to make it work with AArch64. CMunge is a better solution as it creates assembler files which can be examined and modified easily.

  31. CMunge has been updated to generate AArch64 module headers. Not all the interfaces are complete; in particular vector handlers cannot claim the vector as yet.

  32. GNU make has not been ported to RISC OS 64. It can be used to orchestrate the building of AArch64 binaries for use with RISC OS 64 on other platforms, as a native tool. 2 3

  33. Code compression is redundant these days as disc is cheap and fast.

  34. Code compression is redundant these days as disc is cheap and fast.

  35. Perl in RISC OS 64 is functional, but cannot invoke commands due to the lack of system in the C library.

  36. Bison has been built but not tested in its built form.

  37. Defmod relies on AArch32 output, so is not useful for AArch64. 2 3

  38. Flex has been built but not tested in its built form.

  39. A small version of cat.

  40. Lists services used by modules. For AArch64 this is only dispatched through a table, so is trivial to decode.

  41. SEd has been built but not tested in its built form.

  42. Version number translator has been built and works.

About

Miscellaneous status of RISC OS 64.

Topics

Resources

Stars

Watchers

Forks