Tutorial
Binary command (C language)
$ mkdir pong
$ cd pong
$ bpm new
This project is :
1) A binary program
2) A library
3) A rom
answer ? 1
Init bpm.tml
Init src folder
Init src/tmp.c
Init VERSION file
Add github action main.yml into project: y/N ?N
initialized
Set oricutron path (global)
~$ bpm config oricutron_path /mnt/c/Users/myfolder/OneDrive/oric/oricutron_plugins/oricutron
~$ bpm run

Library (Assembly language only)
~$ mkdir gizmo && cd gizmo
~$ bpm new
This project is :
1) A binary program
2) A library
3) A rom
answer ?2
Init .gitignore
Init bpm.tml
Init src folder
Init VERSION file
Add github action main.yml into project: y/N ?N
initialized
~$ tree
.
├── bpm.tml
├── docs
├── src
│ └── dynamic_lib
│ └── gizmo.s
└── VERSION
~$ bpm build
Creating build/etc/bpm/gizmo/2025.1
Generate gizmo.lib
Building gizmo.llo
No build done
~$ tree
.
├── bpm.tml
├── bpmtmp
│ └── gizmo.o
├── build
│ ├── etc
│ │ └── bpm
│ │ └── gizmo
│ │ └── 2025.1
│ │ └── bpm.tml
│ └── usr
│ ├── lib
│ │ └── gizmo
│ │ └── 2025.1
│ │ └── llo
│ │ └── gizmo.lib
│ └── share
│ └── gizmo
│ └── 2025.1
├── docs
├── src
│ └── dynamic_lib
│ ├── gizmo.s
│ ├── gizmo_so.o
│ └── gizmo_so.s
└── VERSION
Add a binary to test a library :
This commands add "curl" binary name with "tests/curl.c" path and "arg1 arg2" which will be passed into Orix path
bpm config add project binary curl tests/curl.c "arg1 arg2"
Publish to bpm repository
Check publish key
If this command returns an empty line :
set | grep BPM
BPM_PUBLISH_KEY=yourKey
The publish key is not available. Ask one to jede[at]oric[dot]org and set key for publishing
~$ vi ~/.bashrc
add :
export BPM_PUBLISH_KEY=yourKey
. ~/.bashrc
$ bpm publish
Get a package from repository library for current project
'bpm search' list all available package.
$ bpm search
orixsdk 2023.3 - Orix Software Toolkit
netdb 2024.4 - Network database operations
ksocket 2025.1 - Only use this package in Kernel source code (socket management part)
ch395 2024.4 - ch395 low hardware routine. Use socket lib for socket management under Orix
kch395 2025.1 - Only for orix kernel
inet 2025.1 - Provide inet_aton
socket 2025.2 - Socket management https://orix-software.github.io/socketlib/api/
curl 2025.1 - Curl lib for Orix https://orix-software.github.io/curllib/api/
$bpm add netdb@2024.4
it will be added in "bpm.tml" manifest
Use orixsdk macro in project
Verify if orixsdk plugins is installed (installed flag):
bpm plugins
Use 'bpm plugins -h' for 'plugins' help
md2hlp: Build markdown into hlp file (text mode) [Installed]
orixsdk: Useful ca65 macro for Orix and reloc binary (Mandatory for Orix projects) (Available versions : ['2023.3.0']) *[Installed]*
asm_bin_tpl: Assembly binary template for Orix (Available versions : ['2024.4']) [Installed]
asm_rom_tpl: Assembly rom template for Orix (Available versions : ['2024.4']) [Installed]
github_action: Template for github action (Available versions : ['2024.4']) [Installed]
generatedoc: Tool to comment source code and generate markdown (Available versions : ['2025.1']) [Installed]
if the plugins is activated, macro in the project assembly code can be loaded like :
.include "SDK_memory.mac"
Add a 'pre' script before the project command is launched
~$ mkdir scripts/
~$ echo "netchk" > scripts/network.sub
~$ bpm config set project orix_run_pre_script scripts/network.sub
In that case, scripts/network.sub will be executed before the binary project when 'bpm run' is launched.
Add a md2hlp file to project
This is done with 'bpm doc' which will try to find in 'docs' folder ${name}.md and will be used by bpm to generate md2hlp file.
Create a file with "name" of the binary and build man page in markdown format. Launch "bpm doc" to generate .hlp for orix
Example with "myprogram" :
~$ vi docs/myprogram.md
~$ bpm doc
Manage 2 differents binaries with two differents source code in src/ folder
Add a new binary (see 'bpm config'):
bpm config add project binary curl tests/curl.c
Launch a binary
bpm run --bin zx02cat