├── .github ├── ISSUE_TEMPLATE │ ├── bug.yaml │ ├── question.yaml │ ├── requirement.yaml │ └── tasks.yaml ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml └── workflows │ ├── sync-from-template.yaml │ └── tweet-pull-request.yaml ├── .pre-commit-config.yaml ├── .rocog └── scripts │ ├── ros2win │ ├── ux-src │ └── win2ros ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── README.md ├── doc ├── .gitkeep ├── RISCOSCodingForums.md ├── RISCOSCodingHowToMakeVideos.md ├── RISCOSCodingResources.md ├── RISCOSCodingVideosIdeas.md ├── SideRequests.md └── attic │ ├── RISCOSCodingMeetings.md │ └── RISCOSCodingMeetingsSchedule.md ├── src ├── .gitkeep ├── MkGCC.sh └── README.md └── tests └── .gitkeep /.github/ISSUE_TEMPLATE/bug.yaml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: File a bug report 3 | title: "[Bug]: " 4 | labels: [bug, triage] 5 | assignees: 6 | - dev-team 7 | body: 8 | - type: markdown 9 | attributes: 10 | value: | 11 | Thanks for taking the time to fill out this bug report! 12 | - type: input 13 | id: contact 14 | attributes: 15 | label: Contact Details (optional) 16 | description: How can we get in touch with you if we need more info? 17 | placeholder: ex. email@example.com 18 | validations: 19 | required: false 20 | - type: input 21 | id: prevalence 22 | attributes: 23 | label: Bug prevalence (optional) 24 | description: "How often do you or others encounter this bug?" 25 | placeholder: "Whenever I visit the user account page (1-2 times a week)" 26 | validations: 27 | required: false 28 | - type: textarea 29 | id: what-happened 30 | attributes: 31 | label: What happened? 32 | description: Also tell us, what did you expect to happen? 33 | placeholder: Tell us what you see! 34 | value: "A bug happened!" 35 | validations: 36 | required: true 37 | - type: textarea 38 | id: repro 39 | attributes: 40 | label: Reproduction steps 41 | description: "How do you trigger this bug? Please walk us through it step by step." 42 | value: | 43 | 1. 44 | 2. 45 | 3. 46 | ... 47 | render: bash 48 | validations: 49 | required: true 50 | - type: input 51 | id: version 52 | attributes: 53 | label: Version 54 | description: Which release are you using? 55 | placeholder: v1.0.0 56 | value: "v1.0.0" 57 | validations: 58 | required: true 59 | - type: dropdown 60 | id: platform 61 | attributes: 62 | label: Platform 63 | description: Which platform are you running RISC OS on? 64 | options: 65 | - Acorn A3000 (with ARM 3) 66 | - Acorn A30x0 or A4000 series (with ARM250) 67 | - Acorn A5000 68 | - Acorn A7000/A7000+ or Castle A7000+ 69 | - Acorn Archimedes 3x0/4x0 series (with ARM 3) 70 | - Acorn Archimedes 5x0 series 71 | - Acorn RiscPC 600 (with ARM 610) 72 | - Acorn RiscPC 700 (with ARM 710) 73 | - Acorn RiscPC x00 with StrongARM 74 | - Acorn RiscPC x00 with Kinetic or Castle RiscPC 75 | - BeagleBoard 76 | - BeagleBoard xM 77 | - CJE RapidO Ig 78 | - CJE RapidO Ti 79 | - Elesar Titanium 80 | - PandaBoard 81 | - PandaBoard ES 82 | - Raspberry Pi 0 all models 83 | - Raspberry Pi 1 model A or B 84 | - Raspberry Pi 2 all models 85 | - Raspberry Pi 3B+ 86 | - Raspberry Pi 4 (Default) 87 | - Raspberry Pi 400 (edge) 88 | - RComp ARMBook or PineBook 89 | - RComp ARMiniX 90 | - RComp ARMX6 91 | - RComp Forte 92 | - RComp Mini.m 93 | validations: 94 | required: true 95 | - type: input 96 | id: riscosversion 97 | attributes: 98 | label: Which version of RISC OS are you using? 99 | placeholder: v1.0.0 100 | value: "v1.0.0" 101 | validations: 102 | required: true 103 | - type: textarea 104 | id: logs 105 | attributes: 106 | label: Can you copy and paste the list of loaded modules? 107 | description: To obtain a list of loaded modules simply open a TaskWindow and type `*modules` and then `*rom.` and copy and paste here all the output 108 | render: shell 109 | - type: checkboxes 110 | id: terms 111 | attributes: 112 | label: Code of Conduct 113 | description: By submitting this issue, you agree to follow our [Code of Conduct](./CODE_OF_CONDUCT.md) 114 | options: 115 | - label: I agree to follow this project's Code of Conduct 116 | required: true 117 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.yaml: -------------------------------------------------------------------------------- 1 | name: Question 2 | description: Ask us a question for this repository/project 3 | title: "[Question]: " 4 | labels: [question] 5 | assignees: 6 | - code-reviews-team 7 | body: 8 | - type: markdown 9 | attributes: 10 | value: | 11 | Thanks for taking the time to ask us your question, we'll answer as soon as we have a chance. 12 | - type: input 13 | id: contact 14 | attributes: 15 | label: Contact Details (optional) 16 | description: How can we get in touch with you if we need more info? 17 | placeholder: ex. email@example.com 18 | validations: 19 | required: false 20 | - type: textarea 21 | id: question 22 | attributes: 23 | label: What would you like to ask? 24 | description: type your question in the box below 25 | placeholder: I would like to ask... 26 | value: "I would like to ask..." 27 | validations: 28 | required: true 29 | - type: checkboxes 30 | id: terms 31 | attributes: 32 | label: Code of Conduct 33 | description: By submitting this issue, you agree to follow our [Code of Conduct](./CODE_OF_CONDUCT.md) 34 | options: 35 | - label: I agree to follow this project's Code of Conduct 36 | required: true 37 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/requirement.yaml: -------------------------------------------------------------------------------- 1 | name: Requirement Report 2 | description: File a requirement report 3 | title: "[Requirement]: " 4 | labels: [requirement, enhancement, feature] 5 | assignees: 6 | - code-reviews-team 7 | body: 8 | - type: markdown 9 | attributes: 10 | value: | 11 | Thanks for taking the time to fill out this requirement report! 12 | - type: input 13 | id: contact 14 | attributes: 15 | label: Contact Details (optional) 16 | description: How can we get in touch with you if we need more info? 17 | placeholder: ex. email@example.com 18 | validations: 19 | required: false 20 | - type: textarea 21 | id: user 22 | attributes: 23 | label: As a RISC OS User I would like to 24 | description: Tell us about your requirement from a general user point of view 25 | placeholder: I would like that... 26 | value: "a new feature would be added that does x and y" 27 | validations: 28 | required: false 29 | - type: textarea 30 | id: developer 31 | attributes: 32 | label: As a RISC OS Software Developer I would like to 33 | description: Tell us about your requirement from a software developer point of view 34 | placeholder: I would like that... 35 | value: "a new feature would be added that does x and y" 36 | validations: 37 | required: false 38 | - type: textarea 39 | id: vendor 40 | attributes: 41 | label: As a RISC OS Vendor/Hardware designer I would like to 42 | description: Tell us about your requirement from a vendor point of view 43 | placeholder: I would like that... 44 | value: "a new feature would be added that does x and y" 45 | validations: 46 | required: false 47 | - type: checkboxes 48 | id: terms 49 | attributes: 50 | label: Code of Conduct 51 | description: By submitting this issue, you agree to follow our [Code of Conduct](./CODE_OF_CONDUCT.md) 52 | options: 53 | - label: I agree to follow this project's Code of Conduct 54 | required: true 55 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/tasks.yaml: -------------------------------------------------------------------------------- 1 | name: Tasks Report 2 | description: File a tasks report 3 | title: "[Tasks]: " 4 | labels: [enhancement] 5 | assignees: 6 | - code-reviews-team 7 | body: 8 | - type: markdown 9 | attributes: 10 | value: | 11 | Thanks for taking the time to fill out this tasks report! 12 | - type: input 13 | id: contact 14 | attributes: 15 | label: Contact Details (optional) 16 | description: How can we get in touch with you if we need more info? 17 | placeholder: ex. email@example.com 18 | validations: 19 | required: false 20 | - type: textarea 21 | id: background 22 | attributes: 23 | label: Background 24 | description: Provide some context for the tasks list 25 | placeholder: Ipsum lorem... 26 | value: "Ipsum lorem..." 27 | validations: 28 | required: true 29 | - type: textarea 30 | id: task-list 31 | attributes: 32 | label: Definition of Done 33 | description: Provide an easy to understand definition of done for each task 34 | placeholder: "- [ ] A" 35 | value: "- [ ] Task A is done when..." 36 | validations: 37 | required: false 38 | - type: checkboxes 39 | id: terms 40 | attributes: 41 | label: Code of Conduct 42 | description: By submitting this issue, you agree to follow our [Code of Conduct](./CODE_OF_CONDUCT.md) 43 | options: 44 | - label: I agree to follow this project's Code of Conduct 45 | required: true 46 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 17 | 18 | This PR contains: 19 | - [ ] bugfix 20 | - [ ] feature 21 | - [ ] refactor 22 | - [ ] documentation 23 | - [ ] other 24 | 25 | Are tests included? 26 | - [ ] no 27 | - [ ] yes (*bugfixes and features will not be merged without tests*) 28 | 29 | Breaking Changes? 30 | - [ ] no 31 | - [ ] yes (*breaking changes will not be merged unless absolutely necessary – please provide motivation*) 32 | 33 | List any relevant issue numbers: 34 | 37 | ### Description 38 | 39 | 45 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: daily 7 | -------------------------------------------------------------------------------- /.github/workflows/sync-from-template.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # 3 | # - Run this workflow to pull changes from the template repository. 4 | # 5 | # - Clone this repository. Check out a branch 6 | # - Copy files from the template onto this clone 7 | # - Push the branch to this repository 8 | # - Create a pull request in this repository 9 | # 10 | name: Sync changes from template 11 | 12 | # TODO: 13 | # - Switch to gh. Check https://github.com/cli/cli/issues/297 for updates 14 | 15 | on: 16 | # Run at 0517 UTC each Friday 17 | schedule: 18 | - cron: "17 5 * * 5" 19 | 20 | # Run when this file changes 21 | push: 22 | paths: 23 | - .github/workflows/sync-from-template.yaml 24 | 25 | # Run when manually triggered 26 | workflow_dispatch: 27 | 28 | env: 29 | MAIN_BRANCH: main 30 | BASE_BRANCH: develop 31 | HEAD_BRANCH: chore/sync-from-template 32 | GIT_AUTHOR_NAME: ${{ github.repository_owner }} 33 | GIT_AUTHOR_EMAIL: ${{ github.repository_owner }}@users.noreply.github.com 34 | REPO_TEMPLATE: RISC-OS-Community/StandardRepoTemplate 35 | THIS_REPO: ${{ github.repository }} 36 | 37 | jobs: 38 | sync-from-template: 39 | # Do not run on the template repository itself 40 | if: github.repository != 'RISC-OS-Community/StandardRepoTemplate' 41 | name: Sync changes from RISC-OS-Community/StandardRepoTemplate 42 | runs-on: ubuntu-latest 43 | continue-on-error: true 44 | 45 | steps: 46 | # Clone the template repository 47 | - name: Check out template repository 48 | uses: actions/checkout@v2 49 | with: 50 | repository: ${{ env.REPO_TEMPLATE }} 51 | token: ${{ github.token }} 52 | path: ${{ env.REPO_TEMPLATE }} 53 | ref: main 54 | 55 | # Configure git globals 56 | #- name: Configure git globals 57 | # run: | 58 | # git config --global init.defaultBranch ${MAIN_BRANCH} 59 | 60 | # Clone the target repository. Check out a branch 61 | - name: Check out ${{ github.repository }} 62 | uses: actions/checkout@v2 63 | with: 64 | repository: ${{ github.repository }} 65 | token: ${{ github.token }} 66 | path: ${{ github.repository }} 67 | ref: main 68 | - name: Create branch in ${{ env.THIS_REPO }} 69 | run: | 70 | git -C "${THIS_REPO}" fetch origin "${HEAD_BRANCH}" || true 71 | git -C "${THIS_REPO}" branch -a 72 | git -C "${THIS_REPO}" checkout -B "${HEAD_BRANCH}" \ 73 | "remotes/origin/${HEAD_BRANCH}" || \ 74 | git -C "${THIS_REPO}" checkout -b "${HEAD_BRANCH}" 75 | 76 | # Copy files from the template onto the target clone 77 | - name: Copy template contents 78 | run: | 79 | _files="$(find ${REPO_TEMPLATE} \ 80 | ! -path "*/.git/*" \ 81 | ! -path "*/.github/workflows/*" \ 82 | ! -name ".gitignore" \ 83 | ! -name "README.md" \ 84 | -type f \ 85 | -print)" 86 | for _file in ${_files}; do 87 | _src="${_file}" 88 | _dst="${THIS_REPO}/${_file#${REPO_TEMPLATE}/}" 89 | # TODO: Find a more robust / elegant way to get this :point_down: 90 | _dst="${_dst%/*}/" 91 | mkdir -p "${_dst}" 92 | echo "INFO: Copy '${_src}' to '${_dst}'." 93 | cp "${_src}" "${_dst}" 94 | done 95 | git -C "${THIS_REPO}" diff 96 | 97 | # Commit changes, if there are any 98 | - name: Commit changes, if any 99 | run: | 100 | git -C ${THIS_REPO} config user.name "${GIT_AUTHOR_NAME}" 101 | git -C ${THIS_REPO} config \ 102 | user.email "${GIT_AUTHOR_EMAIL}" 103 | git -C ${THIS_REPO} add . 104 | git -C ${THIS_REPO} commit \ 105 | -m "Sync from template@${{ github.sha }}" 106 | 107 | # Push the branch to the target repository 108 | - name: Push topic branch 109 | run: git -C ${THIS_REPO} push -u origin "${HEAD_BRANCH}" 110 | 111 | # Create a pull request in the target repository 112 | - name: Create pull request 113 | env: 114 | GITHUB_TOKEN: ${{ github.token }} 115 | GITHUB_USER: ${{ github.actor }} 116 | run: | 117 | pushd ${THIS_REPO} 118 | hub pull-request \ 119 | -b "${BASE_BRANCH}" \ 120 | -h "${HEAD_BRANCH}" \ 121 | --no-edit \ 122 | -m "Pull updates from ${REPO_TEMPLATE}" \ 123 | -m "Pull updates from ${REPO_TEMPLATE}" 124 | popd 125 | 126 | -------------------------------------------------------------------------------- /.github/workflows/tweet-pull-request.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Tweet notifications 3 | 4 | name: Notify twitter of new Push to main branch 5 | 6 | on: 7 | 8 | # Paolo's note: Run on Pull requests merged to main only. 9 | # It's a weird syntax, but, because a Pull Request always 10 | # generates a "push" event when it gets merged, and given 11 | # that we do not commit directly to main, we can use the 12 | # syntax below and it will result on creating a tweet on 13 | # our twitter ONLY when a Pull Request from Develop branch 14 | # gets merged into Main branch, which is what we want. 15 | push: 16 | branches: 17 | - main 18 | 19 | # Paolo's note: Run when manually triggered. 20 | # Because there are situations when we may need to trigger 21 | # it manually, I just added this option. Please do not abuse 22 | # of it :) 23 | workflow_dispatch: 24 | 25 | env: 26 | THIS_REPO: ${{ github.repository }} 27 | 28 | jobs: 29 | # init: 30 | # runs-on: ubuntu-latest 31 | # steps: 32 | # - name: Set current date as env variable 33 | # run: echo "MSG_DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV 34 | 35 | #debug: 36 | # runs-on: ubuntu-latest 37 | # steps: 38 | # - name: Verify ENV variables 39 | # run: | 40 | # echo "Today: ${{ env.MSG_DATE }}, new merge in ${{ env.THIS_REPO }}! You can check it out here: https://github.com/${{ env.THIS_REPO }} #RISC_OS #RISCOS #ROCOnGitHub #OpenSource #DevCommunity" 41 | 42 | tweet: 43 | runs-on: ubuntu-latest 44 | steps: 45 | - name: Set current date as env variable 46 | run: echo "MSG_DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV 47 | - name: Send Tweet 48 | uses: ethomson/send-tweet-action@v1 49 | with: 50 | status: "🎉 Today: ${{ env.MSG_DATE }}, new merge in ${{ env.THIS_REPO }}! You can check it out here: https://github.com/${{ env.THIS_REPO }} #RISC_OS #RISCOS #ROCOnGitHub #OpenSource #DevCommunity" 51 | consumer-key: ${{ secrets.TWITTER_CONSUMER_API_KEY }} 52 | consumer-secret: ${{ secrets.TWITTER_CONSUMER_API_SECRET }} 53 | access-token: ${{ secrets.TWITTER_ACCESS_TOKEN }} 54 | access-token-secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} 55 | 56 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/gitleaks/gitleaks 3 | rev: v8.16.3 4 | hooks: 5 | - id: gitleaks 6 | - repo: https://github.com/jumanjihouse/pre-commit-hooks 7 | rev: 3.0.0 8 | hooks: 9 | - id: shellcheck 10 | - repo: https://github.com/pre-commit/pre-commit-hooks 11 | rev: v4.4.0 12 | hooks: 13 | - id: end-of-file-fixer 14 | - id: trailing-whitespace 15 | -------------------------------------------------------------------------------- /.rocog/scripts/ros2win: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ################### 4 | # name: ros2win 5 | # description: Simple script to generate a MS Windows firendly source 6 | # file from a RISC OS source file. 7 | # author: Paolo Fabio Zaino 8 | # license: Copyright by Paolo Fabio Zaino, all rights reserved 9 | # distributed under CDDL v1.1 10 | # 11 | # Long description: 12 | # This script can be used to generate a MS Windows friendly source file 13 | # from a RISC OS source file, where the \n is enriched with \r. 14 | # This is useful when you want to use a Windows editor to edit 15 | # RISC OS source files. 16 | #################### 17 | 18 | path1="$1" 19 | path2="$2" 20 | 21 | # Display command usage: 22 | function usage() 23 | { 24 | echo "Usage: ros2win [path1] [path2]" 25 | echo "path1: path to the file to convert" 26 | echo "path2: path to the converted file" 27 | echo "Example: ros2win ./src/!Mk/Makefile ./src/!Mk/Makefile" 28 | echo "" 29 | echo "If path2 is not specified then the converted file will be" 30 | echo "saved in the same directory as path1 with the same name" 31 | } 32 | 33 | if [ "${path1}" == "" ] 34 | then 35 | usage 36 | exit 1 37 | fi 38 | 39 | if [ ! -f "${path1}" ] 40 | then 41 | echo "Error: ${path1} is not a file" 42 | exit 1 43 | fi 44 | 45 | if [ "${path2}" == "" ] 46 | then 47 | path2="${path1}" 48 | fi 49 | 50 | awk 'sub("$", "\r")' ${path1} > ${path2} 51 | 52 | exit $? 53 | -------------------------------------------------------------------------------- /.rocog/scripts/ux-src: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ################### 4 | # name: ux-src 5 | # description: SImple script to generate a UNIX-friendly structure from a RISC OS source tree 6 | # author: Paolo Fabio Zaino 7 | # license: Copyright by Paolo Fabio Zaino, all rights reserved 8 | # distributed under CDDL v1.1 9 | # 10 | # Long description: 11 | # This script is used to generate a temporary (and not pushable) ux-src directory 12 | # that will be used to reconfigure your source code in a way that is "usable" by 13 | # Linux/BSD based tools for code analysis, SAST etc. 14 | # 15 | # Usage: 16 | # To use this script it's easy: 17 | # ux-src gen 18 | # the above will create ux-src in your local directory and will link all your source files 19 | # ina UNIXy way. 20 | # To remove ux-src directory type: 21 | # ux-src clean 22 | # And, if the directory exists in your pwd then it will be removed. 23 | #################### 24 | 25 | declare -r cmd="$1" 26 | declare -r env="$2" 27 | curr_dir="$3" 28 | if [ "${curr_dir}" == "" ] 29 | then 30 | curr_dir="$(pwd)" 31 | declare -r curr_path="$(pwd)/src" 32 | else 33 | declare -r curr_path="${curr_dir}/src" 34 | fi 35 | 36 | # Debug mode: 37 | debug=0 38 | 39 | # Display command usage: 40 | function usage() 41 | { 42 | echo " Usage: ux-src [path]" 43 | echo " gen, generate ux-src directory" 44 | echo " clean, remove ux-src directory" 45 | echo "github, GitHub Actions environment" 46 | echo " local, local environment" 47 | echo " path, the path to the source tree (optional)" 48 | } 49 | 50 | # Link files from directory f_dir to directory ux-src with extension f_ext: 51 | function link_files() 52 | { 53 | local dir_type="$1" 54 | local src_dir="$2" 55 | local dst_dir="$3" 56 | local f_dir="$4" 57 | local f_ext="$5" 58 | local srch_path="" 59 | local x="$(basename ${src_dir})" 60 | if [ "$dir_type" != "2" ]; 61 | then 62 | srch_path="${src_dir}/${f_dir}" 63 | else 64 | if [ "${x}" == "${f_dir}" ]; 65 | then 66 | srch_path="${src_dir}" 67 | dst_dir="$(dirname ${dst_dir})" 68 | else 69 | return 70 | fi 71 | fi 72 | if [ -d ${srch_path} ]; 73 | then 74 | for f in ${srch_path}/* 75 | do 76 | if [ ! -f "${f}" ] 77 | then 78 | continue 79 | else 80 | local fname="$(basename ${f})" 81 | if [ "${env}" == "github" ] 82 | then 83 | # GitHub Actions do not support symlinks: 84 | cp ${f} ${dst_dir}/${fname}.${f_ext} > /dev/null 2>&1 85 | else 86 | ln -s ${f} ${dst_dir}/${fname}.${f_ext} > /dev/null 2>&1 87 | fi 88 | fi 89 | done 90 | fi 91 | } 92 | 93 | # Check path 94 | function check_path() 95 | { 96 | local last_dir="$1" 97 | if [ "${last_dir}" == "c" ] || [ "${last_dir}" == "C" ] || \ 98 | [ "${last_dir}" == "h" ] || [ "${last_dir}" == "H" ] || \ 99 | [ "${last_dir}" == "cpp" ] || [ "${last_dir}" == "CPP" ] || \ 100 | [ "${last_dir}" == "cxx" ] || [ "${last_dir}" == "CXX" ] || \ 101 | [ "${last_dir}" == "cc" ] || [ "${last_dir}" == "CC" ] || \ 102 | [ "${last_dir}" == "c++" ] || [ "${last_dir}" == "C++" ] || \ 103 | [ "${last_dir}" == "hpp" ] || [ "${last_dir}" == "HPP" ] || \ 104 | [ "${last_dir}" == "hxx" ] || [ "${last_dir}" == "HXX" ] || \ 105 | [ "${last_dir}" == "h++" ] || [ "${last_dir}" == "H++" ] || \ 106 | [ "${last_dir}" == "s" ] || [ "${last_dir}" == "S" ] || \ 107 | [ "${last_dir}" == "Hdr" ] || [ "${last_dir}" == "hdr" ] || \ 108 | [ "${last_dir}" == "fth" ] || [ "${last_dir}" == "FTH" ] || \ 109 | [ "${last_dir}" == "p" ] || [ "${last_dir}" == "P" ] || \ 110 | [ "${last_dir}" == "pl" ] || [ "${last_dir}" == "PL" ] || \ 111 | [ "${last_dir}" == "bas" ] || [ "${last_dir}" == "BAS" ]; 112 | then 113 | return 1 114 | else 115 | return 0 116 | fi 117 | } 118 | 119 | # check for files with the known directory structure and link them in 120 | # the ux-src directory with their appropriate extension: 121 | function find_files_and_link() { 122 | local dir_type="$1" 123 | local src_dir="$2" 124 | local dst_dir="$3" 125 | 126 | # Link C files (if any): 127 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "c" "c" 128 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "C" "c" 129 | 130 | # Link C++ files (if any): 131 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "cpp" "cpp" 132 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "CPP" "cpp" 133 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "cxx" "cxx" 134 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "CXX" "cxx" 135 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "cc" "cc" 136 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "CC" "cc" 137 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "c++" "cpp" 138 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "C++" "cpp" 139 | 140 | # Link C++ header files (if any): 141 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "hpp" "hpp" 142 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "HPP" "hpp" 143 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "hxx" "hxx" 144 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "HXX" "hxx" 145 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "h++" "hpp" 146 | 147 | # Link C header files (if any): 148 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "h" "h" 149 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "H" "h" 150 | 151 | # Link Assembler files (if any): 152 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "s" "s" 153 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "S" "s" 154 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "Hdr" "s" 155 | 156 | # Link Forth files (if any): 157 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "fth" "fth" 158 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "FTH" "fth" 159 | 160 | # Link Pascal and Prolog files (if any): 161 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "p" "p" 162 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "P" "p" 163 | 164 | # Link Perl files (if any): 165 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "pl" "pl" 166 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "PL" "pl" 167 | 168 | # Link BASIC files (if any): 169 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "bas" "bas" 170 | link_files "${dir_type}" "${src_dir}" "${dst_dir}" "BAS" "bas" 171 | 172 | # Find and link local files 173 | # (that may also be called Makefile.unix etc.): 174 | local last_dir="$(basename ${src_dir})" 175 | check_path "${last_dir}" 176 | local rval=$? 177 | if [ $rval -eq 0 ]; 178 | then 179 | for f in ${src_dir}/* 180 | do 181 | local fname="$(basename ${f})" 182 | # Remove ,fd7 etc. from the filename: 183 | fname="$(echo ${fname} | sed 's/,.*//')" 184 | local fext="$(echo ${fname} | sed 's/^.*\.//')" 185 | # Skip files with extensions: .o, .a, .so 186 | if [ "${fext}" == "o" ] || [ "${fext}" == "a" ] || 187 | [ "${fext}" == "od" ] || [ "${fext}" == "oz" ] || 188 | [ "${fext}" == "odz" ] || [ "${fext}" == "so" ] || 189 | [[ "${fext}" =~ "so\..*" ]]; 190 | then 191 | continue 192 | fi 193 | if [ -f "${f}" ]; 194 | then 195 | if [ "$env" == "github" ] 196 | then 197 | # GitHub Actions do not support symlinks: 198 | cp ${f} ${dst_dir}/${fname} 199 | else 200 | ln -s ${f} ${dst_dir}/${fname} 201 | fi 202 | fi 203 | done 204 | fi 205 | 206 | } 207 | 208 | # recursively analyse subdirectories tree in ./src and generate all the correspondent directories in ./ux-src and exclude the typical c, h etc. RISC OS directories 209 | function gen_dirs() 210 | { 211 | local dir_to_explore="${1:-$curr_dir/src}" # Use first argument as directory to explore, default to ${curr_dir}/src 212 | for d in "${dir_to_explore}"/* 213 | do 214 | if [ ! -d "${d}" ] 215 | then 216 | local dname2="$(echo ${d} | sed 's/^.*\/src\///')" 217 | find_files_and_link "0" "${d}" "${curr_dir}/ux-src/${dname2}" 218 | else 219 | local dname="$(basename "${d}")" 220 | check_path "${dname}" 221 | local rval=$? 222 | if [ $rval -eq 1 ]; 223 | then 224 | #local dname2="$(echo ${d} | sed 's/^.*\/src\///')" 225 | local dname2="${d#*/src/}" 226 | if [ "${dname2}" != "" ] 227 | then 228 | find_files_and_link "2" "${d}" "${curr_dir}/ux-src/${dname2}" 229 | fi 230 | else 231 | local dname2="$(echo ${d} | sed 's/^.*\/src\///')" 232 | echo -n "Processing: ${dname2} ... " 233 | local dname3="$(basename ${dname2})" 234 | if [ "${dname3}" != "o" ] && [ "${dname3}" != "a" ] && 235 | [ "${dname3}" != "od" ] && [ "${dname3}" != "oz" ] && 236 | [ "${dname3}" != "odz" ] && [ "${dname3}" != "so" ] ; 237 | then 238 | # Skip the o directory (it's not required in the UX world) 239 | # process everythign else: 240 | if [ ! -d "${curr_dir}/ux-src/${dname2}" ] 241 | then 242 | mkdir -p "${curr_dir}/ux-src/${dname2}" 243 | find_files_and_link "${rval}" "${d}" "${curr_dir}/ux-src/${dname2}" 244 | fi 245 | echo "ok" 246 | # Recursive call to explore the sub-directory 247 | gen_dirs "${d}" 248 | else 249 | echo "skipped" 250 | fi 251 | fi 252 | fi 253 | done 254 | } 255 | 256 | # Check command line syntax: 257 | function check_cmd() 258 | { 259 | if [ "$cmd" != "gen" ] && [ "$cmd" != "clean" ] 260 | then 261 | usage 262 | exit 1 263 | fi 264 | } 265 | 266 | ################# 267 | # Main program 268 | ################# 269 | 270 | # Check commadn line syntax: 271 | check_cmd 272 | 273 | # Check if we are in a RISC OS source tree: 274 | if [ ! -d ${curr_dir}/src ] 275 | then 276 | echo "Error: it appears you are not in a RISC OS Community source tree" 277 | exit 1 278 | fi 279 | 280 | # Run the command: 281 | if [ "$cmd" == "gen" ] 282 | then 283 | echo "Generating ux-src directory in ${curr_dir}" 284 | 285 | # Generate ux-src: 286 | mkdir -p ${curr_dir}/ux-src 287 | 288 | # Generate all the directories in ux-src: 289 | gen_dirs "${curr_path}" 290 | 291 | # Link main Makefiles: 292 | if compgen -G "${curr_dir}/src/Makefile*" > /dev/null; 293 | then 294 | for f in ${curr_dir}/src/Makefile* 295 | do 296 | fname="$(basename ${f})" 297 | if [ "$env" == "github" ] 298 | then 299 | # GitHub Actions do not support symlinks: 300 | cp ${f} ${curr_dir}/ux-src/${fname} 301 | else 302 | ln -s ${f} ${curr_dir}/ux-src/${fname} 303 | fi 304 | done 305 | fi 306 | 307 | # Link the Build Script for Unix: 308 | if [ -f "${curr_dir}/src/MkGCC.sh" ] 309 | then 310 | if [ "$env" == "github" ] 311 | then 312 | # GitHub Actions do not support symlinks: 313 | cp ${curr_dir}/src/MkGCC.sh ${curr_dir}/ux-src/MkGCC.sh 314 | else 315 | ln -s ${curr_dir}/src/MkGCC.sh ${curr_dir}/ux-src/MkGCC.sh 316 | fi 317 | fi 318 | 319 | if [ "$debug" == "1" ] 320 | then 321 | ls -l ${curr_dir}/ux-src 322 | fi 323 | else 324 | # Remove existing ux-src 325 | if [ -d ${curr_dir}/ux-src ] 326 | then 327 | for f in ${curr_dir}/ux-src/* 328 | do 329 | if [ "$env" == "github" ] 330 | then 331 | # GitHub Actions do not support symlinks: 332 | rm -f ${f} 333 | else 334 | if [ ! -d ${f} ] 335 | then 336 | unlink ${f} 337 | fi 338 | fi 339 | done 340 | rm -rf ${curr_dir}/ux-src 341 | fi 342 | fi 343 | 344 | exit $? 345 | -------------------------------------------------------------------------------- /.rocog/scripts/win2ros: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ################### 4 | # name: win2ros 5 | # description: Simple script to generate a RISC OS firendly source 6 | # file from a Windows source file. 7 | # author: Paolo Fabio Zaino 8 | # license: Copyright by Paolo Fabio Zaino, all rights reserved 9 | # distributed under CDDL v1.1 10 | # 11 | # Long description: 12 | # This script can be used to generate a RISC OS friendly source file 13 | # from a Windows source file, where the \n\r is replaced with \n. 14 | # This is useful when you want to use a Windows editor to edit 15 | # RISC OS source files. 16 | #################### 17 | 18 | path1="$1" 19 | path2="$2" 20 | 21 | # Display command usage: 22 | function usage() 23 | { 24 | echo "Usage: win2ros [path1] [path2]" 25 | echo "path1: path to the file to convert" 26 | echo "path2: path to the converted file" 27 | echo "Example: win2ros ./src/!Mk/Makefile ./src/!Mk/Makefile" 28 | echo "" 29 | echo "If path2 is not specified then the converted file will be" 30 | echo "saved in the same directory as path1 with the same name" 31 | } 32 | 33 | if [ "${path1}" == "" ] 34 | then 35 | usage 36 | exit 1 37 | fi 38 | 39 | if [ ! -f "${path1}" ] 40 | then 41 | echo "Error: ${path1} is not a file" 42 | exit 1 43 | fi 44 | 45 | if [ "${path2}" == "" ] 46 | then 47 | path2="${path1}" 48 | fi 49 | 50 | awk '{ sub("\r$", ""); print }' ${path1} > ${path2} 51 | 52 | exit $? 53 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge: 6 | 7 | - to put our best efforts into the analysis, specification, design, development, testing, maintenance and review of computer software that we create and store here to ensure the best possible quality submissions. 8 | 9 | - to respect international copyright laws, avoid plagiarism and credit others where required. 10 | 11 | - to make participation in our community a harassment-free experience for everyone, regardless of age, visible or invisible disability, ethnicity, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 12 | 13 | We pledge to act and interact in ways that contribute to an open, welcoming, 14 | diverse, inclusive, and healthy community through respectful communication and discussion to allow a supportive learning environment and to elevate the quality of our work. 15 | 16 | ## Our Standards 17 | 18 | Examples of behaviour that contributes towards meeting our aims 19 | 20 | * Maintaining focus on the aims of each project 21 | * Testing, modelling and proving hypotheses with code examples 22 | * Checking and testing our work before submitting it 23 | * Offering constructive feedback or being open to constructive feedback on our code creations 24 | * Asking for help when needed 25 | * Responding to requests for help if we are able to 26 | * Sharing technical knowledge 27 | * Acknowledging and participating in community achievements 28 | 29 | Examples of behaviour that contributes to a positive environment for our 30 | community include: 31 | 32 | * Demonstrating empathy and kindness toward other people 33 | * Being respectful of differing opinions, viewpoints, and experiences 34 | * Giving and gracefully accepting constructive feedback 35 | * Accepting responsibility and apologizing to those affected by our mistakes, 36 | and learning from the experience 37 | * Focusing on what is best not just for us as individuals, but for the 38 | overall community 39 | 40 | Examples of unacceptable behaviour include: 41 | 42 | * The use of sexualized language or imagery, and sexual attention or 43 | advances of any kind 44 | * Trolling, insulting or derogatory comments, and personal or political attacks 45 | * Public or private harassment 46 | * Publishing others' private information, such as a physical or email 47 | address, without their explicit permission 48 | * Other conduct which could reasonably be considered inappropriate in a 49 | professional setting 50 | 51 | ## Enforcement Responsibilities 52 | 53 | Community leaders are responsible for clarifying and enforcing our standards of acceptable behaviour and will take appropriate and fair corrective action in response to any behaviour that they deem inappropriate, threatening, offensive, or harmful. 54 | 55 | Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, the community aims, and will communicate reasons for moderation decisions when appropriate. 56 | 57 | ## Scope 58 | 59 | This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. 60 | Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. 61 | 62 | ## Enforcement 63 | 64 | Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported to the community leaders responsible for enforcement at riscos[@]zfpsystems.com. 65 | 66 | All complaints will be reviewed and investigated promptly and fairly. 67 | 68 | All community leaders are obligated to respect the privacy and security of the 69 | reporter of any incident. 70 | 71 | ## Enforcement Guidelines 72 | 73 | Community leaders will follow these Community Impact Guidelines in determining 74 | the consequences for any action they deem in violation of this Code of Conduct: 75 | 76 | ### 1. Correction 77 | 78 | **Community Impact**: Use of inappropriate language or other behaviour deemed 79 | unprofessional or unwelcome in the community. 80 | 81 | **Consequence**: A private, written warning from community leaders, providing 82 | clarity around the nature of the violation and an explanation of why the 83 | behaviour was inappropriate. A public apology may be requested. 84 | 85 | ### 2. Warning 86 | 87 | **Community Impact**: A violation through a single incident or series 88 | of actions. 89 | 90 | **Consequence**: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. 91 | 92 | ### 3. Temporary Ban 93 | 94 | **Community Impact**: A serious violation of community standards, including 95 | sustained inappropriate behaviour. 96 | 97 | **Consequence**: A temporary ban from any sort of on-line resources controlled by the RISC OS Community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. 98 | 99 | ### 4. Permanent Ban 100 | 101 | **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals. 102 | 103 | **Consequence**: A permanent ban from any sort of on-line resources controlled by the RISC OS Community. 104 | 105 | ## Attribution 106 | 107 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 108 | version 2.0, available at 109 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 110 | 111 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 112 | enforcement ladder](https://github.com/mozilla/diversity). 113 | 114 | [homepage]: https://www.contributor-covenant.org 115 | 116 | For answers to common questions about this code of conduct, see the FAQ at 117 | https://www.contributor-covenant.org/faq. Translations are available at 118 | https://www.contributor-covenant.org/translations. 119 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to RISC OS Community Projects and repositories 2 | This is a relatively short guide about how to contribute to the ROS Community projects. 3 | 4 | You can contribute by: 5 | 1) Adding new projects and ideas 6 | 2) Improving/fixing code in existing repositories 7 | 3) Reviewing/Improving requirements and documentation 8 | 4) Helping us with the graphics/sound that certain projects and repositories may require 9 | 5) Helping us test the code on as many RISC OS platforms and OS versions as possible (within the supported range) 10 | 6) Providing us constructive feedback on the work/projects/repositories/requirements/designs 11 | 12 | The following chapters will help those who are completely new to this process, introduce a common dictionary of technical terms to make sure we are all on the same page, and finally provide instructions on how to submit your contribution. 13 | 14 | Thanks for considering helping us and we hope you'll have fun! 15 | 16 | ## Is this your first contribution? 17 | If this is your first contribution to an Open Source project then don't be afraid. Here there is a free course for you to follow that will give you a lot of useful information: [How to contribute to an Open Source project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github) 18 | 19 | ## Submitting code 20 | To submit our changes we use Pull Requests (if you are used to GitLab you may know them as Merge Requests). Any code change should be submitted as a pull request, no other ways are allowed, sorry. Read below for the details and the guidelines. 21 | 22 | ## Common dictionary 23 | Table of technical terms and meaning in this context: 24 | ``` 25 | +------------------------------+------------------------------------------------+ 26 | | Terms | Description | 27 | +------------------------------+------------------------------------------------+ 28 | | Divergent Development | Development that may end up generating two or | 29 | | | more projects as a split from an original one. | 30 | | | A typical example of this are Forks, they may | 31 | | | not converge back into the original project | 32 | | | and originate a new one or a split from the | 33 | | | original one. | 34 | +------------------------------+------------------------------------------------+ 35 | | Convergent Development | Development that is always going to converge | 36 | | | back into the original project. A good example | 37 | | | of this are Branches that are ALWAYS meant to | 38 | | | converge back to the original project. | 39 | +------------------------------+------------------------------------------------+ 40 | | Versioning System | Is a tool or a framework that allows a team of | 41 | | | developers to manage their shared source code | 42 | | | in both way Divergent and Convergent Dev. | 43 | | | Git is an example of this and github too. | 44 | +------------------------------+------------------------------------------------+ 45 | | Fork | In git a fork is a complete copy of an entire | 46 | | | repository which includes its history till | 47 | | | that moment a user forked the repo. | 48 | | | Forks are recommended when the new code may or | 49 | | | may NOT converge back to the original codebase | 50 | +------------------------------+------------------------------------------------+ 51 | | Branch | Branches are more like "construction zones" in | 52 | | | a codebase and so they are meant to rejoin the | 53 | | | original codebase when done. | 54 | | | Branches should be intended as a short living | 55 | | | entity use to work to improve/change a specific| 56 | | | feature in the original codebase. | 57 | +------------------------------+------------------------------------------------+ 58 | | diff | Its a tool or an automatic procedure meant to | 59 | | | detect all the changes between the codebase | 60 | | | and the fork or the branch we are comparing. | 61 | +------------------------------+------------------------------------------------+ 62 | ``` 63 | **Please note:** 64 | 65 | Forks are more expensive than branches as they create a full copy of a project and when merged back to the codebase git has to run a full diff of everything while a Branch git runs a diff only of the portion we have worked/modified. Forks also take up more space generally. 66 | 67 | ## Pre-requisites (before you start) 68 | Please make sure you have a github account before you start. Also we recommend to add your RSA Public key to your github account. If you do not know how to do that please follow the instructions here: 69 | 70 | - [Create a github account](https://github.com/join) 71 | - [Add an RSA key to your github account](https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account) 72 | - [It's a good practice to protect your account by adding 2 factors authentication](https://docs.github.com/en/github/authenticating-to-github/configuring-two-factor-authentication) 73 | 74 | ## How to join this community 75 | To provide fixes and improvement to code, you do not necessarily need to join, however if you want to help by reviewing code or other more involved tasks or just be part of one of the team to quickly pick an issue to work on, you'll need to join the community. 76 | 77 | To join, make sure you have your pre-requisites in place and then use the link [here](https://paolozaino.wordpress.com/contact/) to let us know you want to join. 78 | 79 | In the request specify your github account username and which teams you would like to join between: 80 | 81 | - Admin Team 82 | - Code Reviews Team 83 | - Dev Team 84 | - Docs Team 85 | - Graphics Design Team 86 | - Audio Design Team 87 | 88 | I you want, you can request to join multiple teams. 89 | 90 | ## Contributing to this project/repository 91 | To contribute is fairly easy: 92 | 93 | Until a proper RISC OS git tool is being released, we encourage you to use for your "local git" either a Windows computer or a Linux computer or Virtual Machine. 94 | 95 | There are some very useful tips [here at the ROOL Forum](https://www.riscosopen.org/content/documents/git-cheatsheet) 96 | 97 | ## Contributing General Guidelines 98 | In general you'd want to: 99 | * If you want to use Branching: 100 | - Clone a repo from here to your local git using: `git clone repo-url` 101 | - Get into the repo using: `cd repo-name` 102 | - Create your branch using: `git branch -b branch-name` 103 | - we suggest that you name your branches following this pattern: `your_nick-what_type_of_changes_you_are_applying` with no spaces, you can use either dash or underscore to your preference 104 | * If instead you want to use Forking: 105 | - Fork a repo from here to your github account. If you're not familiar with forking then [here there are useful info for you](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) 106 | * Start adding your changes 107 | - If you need on-line RISC OS documentation you can find it [here](https://www.riscosopen.org/wiki/documentation/show/HomePage) 108 | - Where applicable stick to RISC OS Style guide 109 | - If you don't have the guide and would like to get your copy you can: 110 | - find info/help [here](https://www.riscosopen.org/wiki/documentation/show/Style%20Guide) 111 | - Or download a free PDF [here](https://www.riscosopen.org/zipfiles/platform/common/StyleGuide.3.pdf) 112 | - Also please have a look at the Programming Conventions hosted on RISCOS.info, [click here to read them](http://www.riscos.info/index.php/Programming_Conventions) 113 | - [Official Programmer Documentation from RISC OS Open](https://www.riscosopen.org/wiki/documentation/show/Programmer%20documentation) 114 | - For changes that may require patching RISC OS Code or modifying RISC OS code in whatever form please also refer to the [Official Developer Documentation from RISC OS Open](https://www.riscosopen.org/wiki/documentation/show/Developer%20documentation) 115 | - Make sure you keep the documentation and code comments up-to-date with your changes 116 | * When done with your changes add them to your local git using: `git add ./what-you-changed` 117 | * Commit your changes using: `git commit -m "commit message"` 118 | - Make sure your commit messages are clear and meaningful to help reviewers to understand what you were trying to achieve 119 | - When possible try to make small commits and Pull Requests so that the review process can be quicker 120 | * Push your local branch into github using: `git push -u origin your_nick-what_type_of_changes_you_are_applying` 121 | * Submit your branch for review when it is done, do this by making a Pull Request and requesting a review from the Code Reviews Team 122 | - Make sure you've tested your changes before submitting a Pull Request 123 | 124 | # Coding Style for C Developers 125 | 126 | One of the best and most complete C Coding style guide is the Linux Kernel C Coding Style Guide. So, for all general C related coding you should follow such set of rules (learning it can also help you a lot in your Software Engineering career), here is the Linux Coding Style guide for you: [Linux Coding Style Guide](https://www.kernel.org/doc/html/v5.10/process/coding-style.html). 127 | 128 | If you are not an experienced C developer and need an easier to read coding manual before getting into the Linux coding style, we recommend to get copy of "The Elements Of C Programming Style" by Jay Ranade and Alan Nash, it's a very good introduction to good C coding style practices and goes from zero to competent C developer on the matter of coding style elements (it doesn't teach you C!). 129 | 130 | Given that RISC OS is not linux and has its own ToolBox you shall consider all colliding rules to be superseded by the corresponding rule in the RISC OS Style Guide, here is a link to how to obtain it: [RISC OS Style Guide](https://www.riscosopen.org/wiki/documentation/show/Style%20Guide) 131 | 132 | Also please have a look at the Programming Conventions hosted on RISCOS.info, [click here to read them](http://www.riscos.info/index.php/Programming_Conventions) 133 | 134 | ROOL DDE Compiler support C89 and C99 (and they started to add support for C11), so, if you need, [here](http://www.sourceformat.com/pdf/c-standard-international.pdf) you can find a good C99 standard guide (precisely the Committee Draft — May 6, 2005 ISO/IEC 9899:TC2) you can use as reference while coding. 135 | 136 | If instead you prefer to use GCC, RISC OS has native support for GCC 4 and the GCCSDK Project (building C code for RISC OS using GCC on Linux) support GCC 4, GCC 8 and they started to add GCC 10. You can find more info on about this on [RISCOS.info](https://www.riscos.info/index.php/Cross-compiling_software_with_GCCSDK) 137 | 138 | # Extra info for BBC BASIC developers 139 | 140 | ROOL has a fantastic repo with tools that can be used to make life easier for BBC BASIC developers when using git: 141 | 142 | [Tools to help using git with BBC BASIC](https://gitlab.riscosopen.org/Support/RepoTools) 143 | 144 | Also ROOL has a free BBC BASIC Reference Manual PDF updated and available [here](https://www.riscosopen.org/zipfiles/platform/common/BASICRefManual.3.pdf) 145 | 146 | # Extra info for everyone 147 | 148 | If you fear having to learn git or if you just want to help us with reviewing documentation etc. you can also use GitHub via the GitHub application, available for both the Apple iPad and iPhone and Android Tablets and Phones. 149 | The Android/Apple GitHub application makes it very easy to interact with us and provide your contribution without the need to learn git! 150 | Have a look in your device' on-line store for the GitHub application published by GitHub. 151 | 152 | # We now have a repo dedicated to Everything Coding on RISC OS 153 | 154 | The repo is maintained and updated to collect resources to help everyone (from absolute beginners till experienced developers) to learn and/or improve codign skills on RISC OS. 155 | 156 | You can find the repo [here](https://github.com/RISC-OS-Community/CodingOnRISC-OS) 157 | 158 | So no excuses! ;-) 159 | 160 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Everything Coding on RISC OS 2 | 3 | This repository contains and organize all the resources we are aware of to share and provides info to learn and/or improve how to code on RISC OS and ARM platform. 4 | 5 | For Github experienced people, this repo is the equivalent of the many "awesome-resources" repo for other OS/platforms/languages. So please feel free to add what you think would make it better! 6 | 7 | Progress updates are tracked [here](https://github.com/orgs/RISC-OS-Community/projects/6/views/1). 8 | 9 | ## Repository organization 10 | 11 | This repository is organised in multiple "levels": 12 | 13 | * [Resources List](doc/RISCOSCodingResources.md) - Links collection ala Awesome Resources style, to documentations, code snippets and info on Coding on RISC OS and for RISC OS. 14 | * [Forums](doc/RISCOSCodingForums.md) where to ask questions related to code on RISC OS. 15 | * Useful [Code Snippets](src), which are organised by programming language and features. 16 | * [Ideas and suggestions for mini courses](doc/RISCOSCodingVideosIdeas.md) relative to Coding on RISC OS (and for RISC OS) videos for our YouTube channel. 17 | 18 | ## Contributing 19 | 20 | Everyone is welcome to help us to improve this repository and the resources list (as well as proposing more ideas for the meetings!). Also, we are always seeking for people willing to provide courses, presentations and/or sharing your experience coding on RISC OS. 21 | 22 | More info and details [here](doc/RISCOSCodingHowToMakeVideos.md) for who wish to help us with the videos. 23 | 24 | ### How to contribute 25 | 26 | Follow the general instructions [here](CONTRIBUTING.md) and update the documents in `doc` directory as you feel appropriate. When done open a `Pull Request` to the `develop` branch and ask for a review from `RISC-OS-Community/code-reviews-team` so we can review your changes and approve them, thanks! 27 | 28 | If you prefer, you can also use the "Issues" option on the top menu on GitHub to open new requests or share your ideas. 29 | 30 | Also, make sure you have read the Code of Conduct [here](CODE_OF_CONDUCT.md) before posting anything here, thanks. 31 | 32 | Enjoy! :) 33 | -------------------------------------------------------------------------------- /doc/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RISC-OS-Community/CodingOnRISC-OS/d5ed1fbcc4e50683612673c8608369083bb46c89/doc/.gitkeep -------------------------------------------------------------------------------- /doc/RISCOSCodingForums.md: -------------------------------------------------------------------------------- 1 | # RISC OS coding forums 2 | 3 | Here is a list of RISC OS related Forums where to ask for help with programming issues: 4 | 5 | * ROOL Forum (RISC OS Open Forum) 6 | * [Community Support](https://www.riscosopen.org/forum/forums/11) 7 | * [Code Reviews](https://www.riscosopen.org/forum/forums/3) 8 | 9 | * StarDot Forums 10 | * [Programming](https://stardot.org.uk/forums/viewforum.php?f=54), unfortunately stardot mixes together RISC OS and older Acorn platforms, so this forum may appear confusing, however there are good information 11 | * [32-bit Acorn software](https://stardot.org.uk/forums/viewforum.php?f=29), another useful resource which (again) is a bit mixed up between people's programs and traditional commercial applications for RISC OS 12 | 13 | * Google Groups 14 | * [Sys.Acorn.Programmer](https://groups.google.com/g/comp.sys.acorn.programmer), good resource of info and place to ask coding and programming related questions 15 | 16 | * Acorn.de (German forum, in English language) 17 | * doesn't appear to have a programming section 18 | 19 | Other non active resources 20 | 21 | * Cloverleaf RISC OS Developer Forum 22 | * [RISC OS Dev forum](https://www.riscosdevforum.com/), it seems to have only few posts mostly from Cloverleaf themselves, but it has a useful section on how to recompile GCC 10 for the GCCSDK project, which can be very useful 23 | -------------------------------------------------------------------------------- /doc/RISCOSCodingHowToMakeVideos.md: -------------------------------------------------------------------------------- 1 | # How to make videos for RISC OS Community YouTube channel 2 | 3 | ## Introduction 4 | 5 | This document is intended to provide some guidelines and suggestions on how to make videos for the RISC OS Community YouTube channel. 6 | 7 | On the YouTube channel we release videos with the CC License, so please make sure you understand this and accept it before you submit your video, thank you. 8 | 9 | ## General guidelines 10 | 11 | ### Video Format 12 | 13 | Unless otherwise agreed with the RISC OS Community team, the following guidelines should be followed: 14 | 15 | * Videos should be in English language. If you want to make videos in other languages, please contact the RISC OS Community team. We may be able to provide subtitles in English. 16 | * Videos should be recorded in 1080p (1920x1080) resolution. 17 | * Videos should be recorded in 16:9 aspect ratio. 18 | * Videos should be recorded in 60fps. 19 | * Videos should be recorded in MP4 format. 20 | * Videos should be recorded in H.264 codec. 21 | * Videos should be recorded in AAC audio codec. 22 | * Videos should be recorded in stereo audio. Microphone are usually mono, but the video recording software should take care of this automatically. 23 | * Videos should be recorded in 48kHz audio sample rate. 24 | 25 | ### Video content 26 | 27 | Unless otherwise agreed with the RISC OS Community team, the following guidelines should be followed: 28 | 29 | * Videos should be related to RISC OS, either coding "on" or "for" RISC OS or using RISC OS. If you want some ideas to work on, please check the [Ideas and suggestions for mini courses](doc/RISCOSCodingVideosIdeas.md) document. 30 | * If you want to make a video about your own project, please contact the RISC OS Community team first. Also make sure your project is Open Source and, possibly, available (publicly) on GitHub. The reason to restrict videos to Open Source projects only is to avoid any potential legal issues (so it's not negotiable, sorry!). 31 | * Videos should be as short as possible (between 5 to 15 minutes max, and not shorter than 5 minutes). If you have a lot of content to show, please consider splitting it into multiple videos (check [Series](#series) for more details). 32 | * Videos should be as simple as possible. Please avoid using technical terms or jargon unless strictly necessary. If you have to use technical terms or jargon, please explain them in simple terms and/or provide links to publicly available resources (like Wikipedia for example) that explains such concepts in clear terms. 33 | * You should record just the screen of your computer. Please avoid recording yourself or other people. We do not assume any responsibility for any potential legal issues that may arise from recording people without their explicit consent and/or privacy breaching coming from showing people on camera etc. 34 | 35 | #### Video Content restrictions 36 | 37 | * Videos should be friendly and welcoming to everyone. Please avoid any kind of offensive language or behavior. 38 | * You should not record any copyrighted content. Our videos will always be freely available and provided under [YouTube CC license (Creative Common license)](https://support.google.com/youtube/answer/2797468?hl=en-GB). 39 | * Your videos should be as impartial as possible. Please avoid trying to promote any specific product or service. It's our strong belief that we should show only technical content and let the viewer decide what to use and what not to use. It's wonderful to be enthusiastic about a product or service, but please avoid trying to convince the viewer to use it. Also please avoid trying to convince the viewer to not use a specific product or service. 40 | * You should not record any content that may be considered potentially illegal, offensive or inappropriate including in desktop background pictures or examples files and images etc. If you are not sure about what is considered offensive or inappropriate, please contact the RISC OS Community team. Also please consider reading our [Code of Conduct](CODE_OF_CONDUCT.md). Our videos are available world wide, so please make sure your content is suitable for everyone. 41 | * Please ensure that your video remains focused on the technical content and refrains from featuring any political, religious or offensive material. This includes any content that could be discriminatory or harmful to any age, gender, LGBT+ individuals and other minority groups or ethnicity. If you are unsure about what may be considered inappropriate, please consult the RISC OS Community team. Additionally, we strongly encourage you to familiarize yourself with our [Code of Conduct](CODE_OF_CONDUCT.md) for more detailed guidance. 42 | * Please understand that we will not publish any video containing material that doesn't meet the above guidelines and doesn't respect our [Code of Conduct](CODE_OF_CONDUCT.md). 43 | 44 | ### Video recording 45 | 46 | If you're not experienced with video recording, there are a number of things you should consider: 47 | 48 | 1) Video capturing, this is a technique to record the screen of your computer. There are a number of ways you can do this, please check the [Video Capturing](#video-capturing) section below for more details. 49 | 2) Audio capturing, this is a technique to record the audio from your microphone. There are a number of ways you can do this, please check the [Microphone](#microphone) section below for more details. 50 | 3) When recording your videos, you may wish to follow a "script" to make sure you don't forget anything. This is not strictly necessary, but it may help you to make sure you don't forget anything. Also, if you're not experienced with video recording, it may help you to feel more confident. Please check the [Script](#script) section below for more details. 51 | 4) Each video should NOT be shorter than 5 minutes and should NOT be longer than 15 minutes (average length should be around 10 minutes). If you have a lot of content to show, please consider splitting it into multiple videos or consider making a series of videos. Please check the [Series](#series) section below for more details. If a single video requires a lot of details, then please consider contacting us to let us know you wish to record an "In-Depth" video. Please check the [In-Depth](#in-depth) section below for more details. 52 | 5) Please make sure your screen is clean and tidy. Please avoid showing any kind of personal information on your screen. Please check the [Screen](#screen) section below for more details. Avoid also showing passwords and such. If you can't avoid that, then don't worry, we can always black-out that part of the video during editing. 53 | 6) Please note (only for coding videos), your code will have to be received with an Open Source license that allow us to upload and store it in [this](https://github.com/RISC-OS-Community/CodingOnRISC-OS) repository for users to use and read. Please check the [Code](#code) section below for more details. 54 | 55 | Other useful tips: 56 | 57 | * Please make sure your screen is clean and tidy. Please avoid showing any kind of personal information on your screen. 58 | * Please make sure your screen is not too bright or too dark. 59 | * Please make sure your microphone is not too close or too far from your mouth. 60 | * Please make sure your microphone is not too loud or too quiet. In editing we can fix the volume, but we can't fix distortion. 61 | * Please make sure your microphone is not too close to your computer. If you have a laptop, please make sure your microphone is not too close to the fan. 62 | * Please try not to open too many windows during your video recording. If you have to open a lot of windows, please consider closing them, so that the viewer can always focus on what it truly important for learning. 63 | 64 | To record your videos there are a number of ways you can use. The following are just some suggestions: 65 | 66 | ### Video Capturing 67 | 68 | This is where most of the work of making videos for our channel focus on. Showing how to use a tool or a technique and record the computer screen while doing so. 69 | 70 | There are a number of ways you can do this, but the most common are: 71 | 72 | 1) Using an hardware device to record the screen. Please check the [Video Capturing](#video-capturing) section below for more details. 73 | 2) Using an emulator to record the screen. When using an EMulator, all you'll need is a recording software. Please check the [Recording software](#recording-software) section below for more details. 74 | 75 | ### How to record a video 76 | 77 | If it helps you, divide your video in multiple takes (or chapters). In other words, divide your content into multiple parts and record each part separately. This way you can focus on a single part at a time and you can make sure you don't forget anything. Also, if you make a mistake, you can simply re-record that part without having to re-record the whole video. 78 | 79 | We'll recombine them together in a single video, for you during the editing phase that we do, you don't have to do this, so, no worries. 80 | 81 | if you make a single take, please leave few seconds of silence between each chapter so we have enough "dead" time to add "chapter labels" (tiles) and transition effects when editing. 5 seconds should be enough, thx. 82 | 83 | Ideally each video should be provided in mp4 format, but we can also translate multiple formats, just make sure you do not compress your video(s) too much to make them lose video and audio quality. If in doubt, ask us for a specific format, thx. 84 | 85 | #### Intro 86 | 87 | Each video should always start with a quick intro of what you're planning to show and the intro may contain the following information: 88 | 89 | * Quick introduction to the topic of the video 90 | * List of requirements (if any) 91 | * List of assumptions (if any) 92 | * List of prerequisites (if any) 93 | 94 | On top of that don't forget to provide us with a list of links to resources (if any) (please make sure they are publicly available), these should be: 95 | 96 | * Links to the software you're going to use (if any) 97 | * Links to the hardware you're going to use (if any) 98 | * Links to the code you're going to show (if any) 99 | * Links to the documentation you're going to show (if any) 100 | 101 | #### Outro 102 | 103 | Each video should always end with a quick outro of what you have shown and the outro may contain the following information: 104 | 105 | * Quick summary of what you have shown 106 | 107 | The outro section is not a must, but it may help the viewer to remember what you have shown. 108 | 109 | #### Chapters between Intro and Outro 110 | 111 | Between the intro and the outro, you may have multiple chapters. Each chapter should be focused on a single topic and should be as short as possible. If you have a lot of content to show, please consider splitting it into multiple videos or consider making a series of videos. 112 | 113 | ### Screen 114 | 115 | We have observed best results when recording a screen set to 720p (1280 x 720 pixels) and recording it by setting your capture card to 1080p (HD or 1920x1080). This way the fonts are larger and more readable on mobile devices (at this time we have a rate of views from mobile devices of ~ 30%). 116 | 117 | If you're using an emulator, please make sure you're using the latest version of the emulator and that you're using the default settings. This way the viewer will be able to follow the video and learn from it. 118 | 119 | Please don't use too high resolution screens, because the fonts may be too small to read. Try to remember that in this day and age a lot of people will use mobile devices to consume your videos, so please make sure the fonts are large enough to be readable on mobile devices. 120 | 121 | Please avoid JPEG images as background for your RISC OS desktop, because they slow down windows redraw. Also avoid too rich backgrounds, because they may distract the viewer from the content of your video. 122 | 123 | If possible, also avoid too many icons on the RISC OS pinboard (and iconbar), because they may distract the viewer from the content of your video or making it confusing for some novice users. 124 | 125 | ### Script 126 | 127 | A script can be as simple as a bullet list of things you want to show in your video. This is not strictly necessary, but it may help you to make sure you don't forget anything. Also, if you're not experienced with video recording, it may help you to feel more confident. 128 | 129 | If instead you prefer a more elaborate script, then you may consider writing a "transcript" for your video where you also organize each phrase you'll be saying in each chapter. 130 | 131 | It's totally ok to use old releases of RISC OS (no need to focus only on RO 5, all RO releases are welcome!). 132 | 133 | Each video should come with a transcript of the audio. This is to make sure that the video will be accessible to everyone, including people with hearing disabilities. Also, this will help us to translate the video in other languages. However, given that this activity may be time consuming, we have been working to add AI capabilities to this community and we are now able to generate transcripts automatically and fully synchronized for you, so we no longer need you to provide a transcript of your video. 134 | 135 | On top of that we also have added AI capabilities to have transcripts synchronized translation in other languages, although such a feature is still in alpha testing. 136 | 137 | ### Series 138 | 139 | If you have a lot of content to show, please consider splitting it into multiple videos or consider making a series of videos. This way the viewer will be able to follow the series and learn from it, without having to learn a different approach for each video. 140 | 141 | Remember, in most cases viewer attention span is very short, so please try to keep your videos as short as possible. We have observed that the best length for a video is between 5 and 15 minutes (max). 142 | 143 | There is an exception to the above rule for the "In-Depth" videos (see below). But such a videos are meant for a very technical audience which is already familiar with the topic of the video and is seeking for more details and more technical information. 144 | 145 | Series are usually discussed using the [issues](https://github.com/RISC-OS-Community/CodingOnRISC-OS/issues) section of this repository. If you wish to make a series of videos, please consider opening an issue to discuss it with the RISC OS Community team. 146 | 147 | When a series is agreed upon, we'll create a new Play List on the RISC OS Community YouTube channel and we'll add all the videos of the series to that Play List as they become available from the various authors (or from the single author). 148 | 149 | ### In-Depth 150 | 151 | If a single video requires a lot of details, then please consider contacting us to let us know you wish to record an "In-Depth" video. This way we can make sure the viewer will be able to follow the video and learn from it. 152 | 153 | "In-depth" videos are usually longer than 15 minutes, so please make sure you have enough content to show. Also, please make sure you have enough time to record the video. 154 | 155 | Normally we would like to avoid having too many "In-Depth" videos, so please consider splitting your video into multiple videos or consider making a series of videos. 156 | 157 | ### Video Editing 158 | 159 | You do NOT need to edit your videos, we'll do that for you. So please refrain yourself from editing your videos, this is because we have our internal standards on titles, captioning, graphics, styling, animations etc. 160 | 161 | We want all our videos to have the same look and feel, so, again, please refrain yourself from editing your videos, we'll do that for you. 162 | 163 | We do both, audio and video editing. We can improve audio quality, de-roomify, de-noise, de-echo, equalization and apply compression and limiting to your audio tracks, so you do NOT need to do that. 164 | 165 | We do full video editing, so you do NOT need to do that. We can add titles, captions, graphics, styling, animations etc. to your videos. 166 | 167 | Also, if you need sections of your video to explain concepts and fear your video may be too static in such sections, don't worry, we can add animations and even animated slides and timelines to make such sections a bit more "alive", so you do not need to do that. 168 | 169 | All our editing work is highly professional and done with the latest software and hardware available on the market, so you do not need to do that and/or spend a fortune on software, hardware and video editing and audio mastering courses and training. 170 | 171 | And finally, as mentioned in the script section, we also produce your video transcript fully synchronized with your video and audio and we have capabilities to make it available in other languages as well, so you do not need to do that. 172 | 173 | ### Recording software 174 | 175 | What follow is a list of software that can be used to record your videos. Please note that this is not an exhaustive list and you may find other software that may be more suitable for your needs. Also, please note that some software may be available only for specific platforms. Finally please note that some software may be free and open source, while other may be commercial software and we are NOT affiliated with any of them. 176 | 177 | * [OBS Studio](https://obsproject.com/) - OBS Studio is a free and open source software for video recording and live streaming. It's available for Windows, macOS and Linux. 178 | * [SimpleScreenRecorder](https://www.maartenbaert.be/simplescreenrecorder/) - SimpleScreenRecorder is a free and open source software for video recording. It's available for Linux only. 179 | * [QuickTime Player](https://support.apple.com/en-gb/HT201066) - QuickTime Player is a free software for video recording. It's available for macOS only. 180 | * [Camtasia](https://www.techsmith.com/video-editor.html) - Camtasia is a commercial software for video recording. It's available for Windows and macOS. 181 | * [ScreenFlow](https://www.telestream.net/screenflow/overview.htm) - ScreenFlow is a commercial software for video recording. It's available for macOS only. 182 | 183 | ### Microphone 184 | 185 | Please note, the list below is simply for reference or to give you an idea of what you may need. You may find other microphones that may be more suitable for your needs. Also, please note that some microphones may be available only for specific platforms. Finally please note that some microphones may be free and open source, while other may be commercial and we are NOT affiliated with any of them. 186 | 187 | * [Blue Yeti](https://www.bluedesigns.com/products/yeti/) - Blue Yeti is a USB microphone. It's available in a number of colours and it's available on Amazon and other online stores. 188 | * [Blue Snowball](https://www.bluedesigns.com/products/snowball/) - Blue Snowball is a USB microphone. It's available in a number of colours and it's available on Amazon and other online stores. 189 | * [Blue Snowball iCE](https://www.bluedesigns.com/products/snowball-ice/) - Blue Snowball iCE is a USB microphone. It's available in a number of colours and it's available on Amazon and other online stores. 190 | * [Blue Snowflake](https://www.bluedesigns.com/products/snowflake/) - Blue Snowflake is a USB microphone. It's available in a number of colours and it's available on Amazon and other online stores. 191 | * [Blue Raspberry](https://www.bluedesigns.com/products/raspberry/) - Blue Raspberry is a USB microphone. It's available in a number of colours and it's available on Amazon and other online stores. 192 | * [Blue Spark Digital](https://www.bluedesigns.com/products/spark-digital/) - Blue Spark Digital is a USB microphone. It's available in a number of colours and it's available on Amazon and other online stores. 193 | 194 | ### Video Capturing Card 195 | 196 | Please note, the list below is simply for reference or to give you an idea of what you may need. You may find other video capturing cards that may be more suitable for your needs. Also, please note that some video capturing cards may be available only for specific platforms. Finally please note that some video capturing cards may be free and open source, while other may be commercial and we are NOT affiliated with any of them. 197 | 198 | * [Elgato Game Capture HD60 S](https://www.elgato.com/en/gaming/game-capture-hd60-s) - Elgato Game Capture HD60 S is a USB 3.0 video capturing card. It's available on Amazon and other online stores. 199 | * [Elgato Game Capture HD60 Pro](https://www.elgato.com/en/gaming/game-capture-hd60-pro) - Elgato Game Capture HD60 Pro is a PCIe video capturing card. It's available on Amazon and other online stores. 200 | * [Elgato Game Capture 4K60 Pro](https://www.elgato.com/en/gaming/game-capture-4k60pro) - Elgato Game Capture 4K60 Pro is a PCIe video capturing card. It's available on Amazon and other online stores. 201 | * [Elgato Game Capture 4K60 S+](https://www.elgato.com/en/gaming/game-capture-4k60-s-plus) - Elgato Game Capture 4K60 S+ is a USB 3.0 video capturing card. It's available on Amazon and other online stores. 202 | * [Elgato Game Capture HD](https://www.elgato.com/en/gaming/gamecapture-hd) - Elgato Game Capture HD is a USB 2.0 video capturing card. It's available on Amazon and other online stores. 203 | * [Elgato Game Capture HD60](https://www.elgato.com/en/gaming/gamecapture-hd60) - Elgato Game Capture HD60 is a USB 2.0 video capturing card. It's available on Amazon and other online stores. 204 | * [Elgato Game Capture HD60 S](https://www.elgato.com/en/gaming/gamecapture-hd60-s) - Elgato Game Capture HD60 S is a USB 3.0 video capturing card. It's available on Amazon and other online stores. 205 | * [Elgato Game Capture HD60 Pro](https://www.elgato.com/en/gaming/gamecapture-hd60-pro) - Elgato Game Capture HD60 Pro is a PCIe video capturing card. It's available on Amazon and other online stores. 206 | * [Elgato Game Capture 4K60 Pro](https://www.elgato.com/en/gaming/gamecapture-4k60-pro) - Elgato Game Capture 4K60 Pro is a PCIe video capturing card. It's available on Amazon and other online stores. 207 | * [Elgato Game Capture 4K60 S+](https://www.elgato.com/en/gaming/gamecapture-4k60-s-plus) - Elgato Game Capture 4K60 S+ is a USB 3.0 video capturing card. It's available on Amazon and other online stores. 208 | * [Elgato Game Capture HD](https://www.elgato.com/en/gaming/gamecapture-hd) - Elgato Game Capture HD is a USB 2.0 video capturing card. It's available on Amazon and other online stores. 209 | 210 | ### Code 211 | 212 | When making coding videos, please feel free to pick your favorite language. If the video is for a video series, please make sure you post on the specific [issue](https://github.com/RISC-OS-Community/CodingOnRISC-OS/issues) which one you pick, so there aren't people duplicating the effort. 213 | 214 | What follow is a list of requirement for code that is going to be shown on the videos. If you're planning to make coding videos, please read this section carefully. 215 | 216 | #### Code license 217 | 218 | Every program and code showed in every video must be provided with an Open Source license that allow us to upload and store it in this repository for users to use and read. 219 | 220 | The reason for this is that we want to make sure that every video will be useful for everyone, so if you show a program or a code snippet, we want to make sure that people will be able to use it and learn from it. 221 | 222 | Copyleft licenses are preferred, but not mandatory. If you're not sure which license to use, please consider using the MIT license. 223 | 224 | #### Coding series 225 | 226 | Coding Series are a pre-defined set of episode and learning process for which every video creator will have to follow the same steps and the same approach. This is to make sure that the viewer will be able to follow the series and learn from it, without having to learn a different approach for each video. 227 | 228 | If possible, lets share how we are going to solve the problem, so that everyone can use a very similar approach. This may sound a bit bizarre, but the idea is to focus on the specific of coding on RISC OS, not on solving the problem in different ways. This way, when watching the series, people will focus on such differences instead of trying to understand all the different approaches we used to solve the same problem (hope this makes sense). 229 | 230 | This has been really effective with the git series, because we where all using git clone / git add / git commit and git push, so at the end of all the videos, people were well aware of those things (repetita iuvant!), while each video showed the differences between each approach. 231 | -------------------------------------------------------------------------------- /doc/RISCOSCodingResources.md: -------------------------------------------------------------------------------- 1 | # RISC OS Coding Resources 2 | 3 | What follow is a list of resources organised by programming language. There is also a list of generic info for everyone who needs an introduction to programming in general (aka who has no idea of how to code at all). 4 | 5 | ## Introduction to programming 6 | 7 | ### Introduction to computer programming 8 | 9 | This section is for absolute beginners and we list a set of useful resources (in order of from absolute 0 to some degree of knowledge) to help everyone who have no basic knowledge of computer programming in general. 10 | 11 | * Code: The Hidden Language of Computer Hardware and Software (2nd edition) available [here](https://www.amazon.co.uk/Code-Language-Computer-Hardware-Software-dp-0137909101/dp/0137909101/ref=dp_ob_title_bk) 12 | * The Art of Computer Programming (TAOCP) – Donald Knuth This is considered by many the bible of computer programming, it’s a set of multiple volumes, more info [here](https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming) 13 | * Pragmatic Programmer, more info [here](https://www.amazon.co.uk/gp/product/B07VRS84D1?storeType=ebooks&pf_rd_p=d86bed0e-a872-45e2-bd93-7030c464dfa5&pf_rd_r=ASQYRTBVF8KNA89RFW4R&pd_rd_wg=Gfd2M&pd_rd_i=B07VRS84D1&ref_=dbs_r_recs_reads_cwrtbar_typ_r_0&pd_rd_w=p5KPV&content-id=amzn1.sym.d86bed0e-a872-45e2-bd93-7030c464dfa5&pd_rd_r=7f817fc3-7572-452d-8b80-270375a019f6) 14 | * Clean code, you can find more info [here](https://www.amazon.co.uk/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=pd_lpo_1?pd_rd_i=0132350882&psc=1) 15 | 16 | ### Introduction to Software Engineering 17 | 18 | This section is more about software development processes and collaboration with other people. 19 | 20 | * Introduction to Software Engineering, available free [here](https://www.geeksforgeeks.org/software-engineering-introduction-to-software-engineering/) 21 | * Clean Architecture, more info [here](https://www.amazon.co.uk/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164) 22 | * Software Development: Introduction to code testing, free article available [here](https://paolozaino.wordpress.com/2021/06/20/software-development-introduction-to-code-testing/) 23 | 24 | ### RISC OS Developer information 25 | 26 | * 4corn.co.uk excellent collection of old manuals for RISC OS Developers all available free and in PDF format, download them from [here](https://4corn.co.uk/articles/docs/#dev) 27 | * RISC OS PRM (Programmer Reference Manuals) modern (RISC OS 5) and updated editions are available from RISC OS Open [here](https://www.riscosopen.org/content/sales/dde) 28 | * RISC OS 3,4 and 6 developers info are available for free [here](http://riscos.com/support/developers/index.htm) 29 | * Beginners guide to WIMP development available for free [here](http://riscos.com/support/developers/wimpprog/index.htm) 30 | * Acorn Archimedes Games developer guide available for free [here](http://riscos.com/support/developers/agrm/index.htm) 31 | * RISC OS Info, a very useful and rich source of info for developers, you can find it [here](http://www.riscos.info/index.php/Introduction_to_RISC_OS) 32 | * Useful info about the RISC OS "Nested WindowManager", a must read to understand how to write slightly more "modern-ish" looking desktop Apps on RISC OS, you can find the article [here](http://www.vigay.com/inet/acorn/nested.html) 33 | * ROOL Collection of DEVELOPER documentation can be found [here](https://www.riscosopen.org/wiki/documentation/show/Programmer%20documentation) for free. 34 | * RISC OS Modules DB from Peter Howkins, an impressively detailed resource with all OS components details and supports queries, available for free [here](https://www.marutan.net/db2/index.php) 35 | * RISC OS PRM in XML format project from Charles Ferguson (Gerph), include info about RISC OS 6 [here](https://github.com/gerph/riscos-prminxml-staging/) 36 | 37 | ### Get Compilers and Development Environments 38 | 39 | * Get Risc OS Open Desktop Development Environment (commercial) [here](https://www.riscosopen.org/content/sales/dde) 40 | * Step by step instructions on how to install DDE on your RISC OS system [here](https://paolozaino.wordpress.com/2020/10/17/risc-os-installing-rool-desktop-development-environment-dde-tutorial/) 41 | * Get GNU Compiler Collections GCC (free and Open Source) [here](https://www.riscos.info/index.php/GCC_for_RISC_OS) 42 | * Get GCCSDK for Linux (GNU Compiler Collection for cross-build on Linux for RISC OS) [here](http://www.riscos.info/index.php/GCCSDK) 43 | 44 | **Please Note:** Everyone interested on coding on RISC OS should ALWAYS have a copy of all the **PRM** handy and ready to be used. 45 | 46 | ## Programming in Ada on RISC OS 47 | 48 | * Ada 95 A guide for C and C++ programmers, free pdf available [here](https://www.cs.uni.edu/~mccormic/4740/guide-c2ada.pdf) 49 | * Programming in Ada (In German language, but Google Translator seems to translate it ok), more info [here](http://legacy.huber-net.de/adagag.htm) 50 | * Ada and RISC OS, more info [here](http://legacy.huber-net.de/ada_e.htm) 51 | * Ada library for RISC OS, more info [here](http://legacy.huber-net.de/adalio_e.htm) 52 | * Ada class library for RISC OS, more info [here](http://legacy.huber-net.de/adalin_e.htm) 53 | 54 | ## Programming in ARM32 Assembly on RISC OS 55 | 56 | * Introduction to ARM (by David Thomas) available for free [here](http://www.davespace.co.uk/arm/introduction-to-arm/) 57 | * Rick Murray's ARM Assembly introduction available for free [here](https://heyrick.eu/assembler/index.html) 58 | 59 | ## Programming in Bash on RISC OS 60 | 61 | * How to program in Bash Shell, more info [here](https://opensource.com/article/19/10/programming-bash-syntax-tools) 62 | 63 | ## Programming in BBC BASIC on RISC OS 64 | 65 | * BBC BASIC V (A Dabhand Guide), available free [here](http://www.riscos.com/support/developers/basicv/index.htm) 66 | * BBC BASIC Reference (ROOL Edition), available free [here](https://www.riscosopen.org/zipfiles/platform/common/BASICRefManual.3.pdf) 67 | 68 | ### BBC BASIC code examples 69 | 70 | * Charles Ferguson (Gerph) set of code examples [here](https://github.com/gerph/riscos-examples) 71 | 72 | ## Programming in C on RISC OS 73 | 74 | * ANSI C99 Standard specification 75 | * One PDF is available [here](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwie0-bz67D6AhVIRUEAHR6qD5gQFnoECAkQAQ&url=https%3A%2F%2Fframa-c.com%2Fdownload%2Facsl_1.2.pdf&usg=AOvVaw21rxBMwz7xG7-8PZZ-G17y) 76 | * C Pocket Reference, more info [here](https://books.google.co.uk/books/about/C_Pocket_Reference.html?id=MoGYDwAAQBAJ&hl=en&output=html_text&redir_esc=y) 77 | * Harbison, S P and Steele, G L, (1994) A C Reference Manual, (fourth edition). Prentice-Hall, Englewood Cliffs, NJ, USA. ISBN 0133262243. 78 | * Kernighan, B W and Ritchie, D M, (1988) The C Programming Language (second edition). Prentice-Hall, Englewood Cliffs, NJ, USA. ISBN 0-13-110362- 8. This is the original C ‘bible’, updated to cover the essentials of ANSI C too. 79 | * Koenig, A, (1989) C Traps and Pitfalls, Addison-Wesley, Reading, Mass, USA. ISBN 0201179288. 80 | * Acorn/Castle/ROOL DDE C Manual (it's distributed with the DDE - Desktop Development Environment Compilers collection from RISC OS Open), more info [here](https://www.riscosopen.org/content/sales/dde) 81 | * Old copy of the Acorn ANSI C 4 manual, you can find it [here](https://4corn.co.uk/archive/docs/Acorn%20ANSI%20C%20Release%204-opt.pdf) 82 | * Old copy of the Acorn ANSI C 3 manual, you can find it [here](https://4corn.co.uk/archive/acornc3/ANSI%20C%20RELEASE%203-opt.pdf) 83 | * And the release notes paper [here](https://4corn.co.uk/archive/acornc3/ANSI%20C%20%28Release%203%29%20-%20Release%20Note-opt.pdf) 84 | * Steve Fryatt excellent introduction to WIMP programming in C on RISC OS, you can find it [here](https://www.stevefryatt.org.uk/risc-os/wimp-prog) 85 | * Efficient C for ARM (by David Thomas) available for free [here](https://www.davespace.co.uk/tags/BasicOptimisation.html) 86 | 87 | ### Creating OS Modules in C 88 | 89 | * ROOL (RISC OS Open) guide to convert ASM modules to C, available for free [here](https://www.riscosopen.org/wiki/documentation/show/Converting%20modules%20to%20C) 90 | * Rick Murray's Writing modules in C tutorial available for free [here](https://heyrick.eu/blog/index.php?diary=20150323) 91 | 92 | ## Testing libraries for C code (can be used also to test C++ code) 93 | 94 | * mUnit port to RISC OS, available [here](https://github.com/RISC-OS-Community/mUnit) 95 | * GreaTest port to RISC OS, available [here](https://github.com/RISC-OS-Community/GreaTest) 96 | 97 | ## Programming in C++ on RISC OS 98 | 99 | At this time ROOL DDE is still based on the original AT&T CFront release 3.0 (they just added few fixes here and there), While RISC OS 5 also has GCC 4.7.4 which supports up to early C++11 (not complete and exceptions do not work well on RISC OS). If you are after more modern C++ standards please have a look at the GCCSDK project. 100 | 101 | ### General C++ useful sources 102 | 103 | * Stroustrup, B, (1991) The C++ Programming Language, (second edition). Addison-Wesley, Reading, Mass, USA. ISBN 0-201-53992-6. 104 | * Ellis, A and Stroustrup, B, (1990) The Annotated C++ Reference Manual. Addison-Wesley, Reading, Mass, USA. ISBN 0-201-51459-1. 105 | 106 | ### DDE C++ 107 | 108 | * CFront Reference manual, available [here](https://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_2.0/doc/ProductReferenceManual.pdf) 109 | 110 | ### GNU GCC 111 | 112 | * A set of tutorial videos from James Hobson on using GCC 4.7.4 on RISC OS and how to get till building WIMP Apps, you can find it [here](https://www.youtube.com/watch?v=ALiMp-GHIX4) 113 | * GCC For RISC OS, A short intro on riscos.info, you can find it [here](https://www.riscos.info/index.php/GCC_for_RISC_OS) 114 | * GCC Tutorial for RISC OS, a short tutorial on riscos.info, you can find it [here](https://www.riscos.info/index.php/GCC_tutorial) 115 | 116 | ### The GCCSDK Project 117 | 118 | This is a cool project, for the ones that prefer to use Linux based tools to code for RISC OS. 119 | 120 | More info [here](https://www.riscos.info/index.php/Using_GCCSDK) 121 | 122 | ## Programming in Dash on RISC OS 123 | 124 | ## Programming in Forth on RISC OS 125 | 126 | ## Programming in Haskell for RISC OS 127 | 128 | * A WIMP App code example (from Julie Stamp) [here](https://gitlab.riscosopen.org/jstamp/hs) 129 | 130 | ## Programming in LISP on RISC OS 131 | 132 | ## Programming in Lua (RiscLua) on RISC OS 133 | 134 | ### RiscLua interpreter 135 | 136 | * Pre-built binaries [here](http://www.wra1th.plus.com/lua/risclua.html) 137 | * Source code [here](https://github.com/RISC-OS-Community/RiscLua) 138 | 139 | ### RiscLua Forum 140 | 141 | * Official RiscLua forum on Lua Forum, [here](https://luaforum.com/index.php?pages/Lua_Installation_RISC_OS/) 142 | * RiscLua differences with original Lua [here](https://luaforum.com/index.php?threads/riscluas-differences.182/) 143 | 144 | ### Documentation 145 | 146 | * Lua 5.4 Reference Manual [here](https://www.lua.org/manual/5.4/manual.html) 147 | 148 | ## Programming in Obey (RISC OS scripting) 149 | 150 | ## Programming in Python 151 | 152 | ## Programming in Prolog on RISC OS 153 | 154 | ## Programming in SmallTalk on RISC OS 155 | -------------------------------------------------------------------------------- /doc/RISCOSCodingVideosIdeas.md: -------------------------------------------------------------------------------- 1 | # Everything coding on RISC OS videos ideas 2 | 3 | This document collects all the proposed ideas for instructional videos on coding on RISC OS and for RISC OS. 4 | 5 | You can find all the videos already made and ready for consumption [here](https://www.youtube.com/@RiscosCommunityOnGithub/playlists). The link is organised in Play Lists. 6 | 7 | ## Ideas for the mini courses 8 | 9 | YouTube video mini courses should be organised in "Play Lists" each of which dedicated to different aspects of the activities of coding on RISC OS. 10 | 11 | ### Beginners 12 | 13 | * Getting the code! 14 | * What is Git and why use Git 15 | * How to use git on Windows to get RISC OS code (Robert Sprowson) 16 | * How to use git on Linux to build RISC OS code on RISC OS via OmniClient/LanMan98 (Paolo) 17 | * How to use git on macOS to build RISC OS code (Charles Gerph) 18 | * How to use git on GCCSDK to cross compiler for RISC OS (Steve Fryatt) 19 | * How to use !Simplegit on RISC OS (Cameron Cawley) 20 | 21 | * Basics of coding on RISC OS 22 | * Example: Turning On and Off caps lock on the keyboard (and an led using the GPIO on the Raspberry Pi) 23 | * In BBC BASIC 24 | * In DDE C 25 | * In DDE C++ 26 | * In GCC C 27 | * In GCC C++ 28 | * In RiscLua 29 | * In Python 30 | * In Perl 31 | * ARM Assembly (AArch32) 32 | 33 | * How to use StrongEd for code editing 34 | 35 | * How to use VS Code to code on RISC OS (or other modern IDEs) 36 | * Using VS Code for GCCSDK and BBC BASIC (Steve Fryatt) 37 | 38 | * Mini course on programming in BBC BASIC on RISC OS 39 | * Let's start (Christopher Dewhurst) 40 | * Calling SWIs (Christopher Dewhurst) 41 | * How to use the GPIO on Raspberry Pi (TBD) 42 | * How to use the Toolbox (TBD) 43 | * How to use Fonts (both in full screen and Windows) 44 | * Graphics in a Window 45 | 46 | * Mini course on programming in C on RISC OS 47 | * How to use GCC Compiler (TBD) 48 | * How to install GCC on RISC OS 49 | * How to compile Hello World 50 | * Static Linking 51 | * Dynamic Linking 52 | * How to use DDE Compiler (TBD) 53 | * How to install the compiler 54 | * How to compile Hello World 55 | * Static Linking 56 | * Make Files 57 | * What are they 58 | * How to write them for RISC OS (TBD) 59 | * Wimp Programming (Steve Fryatt) 60 | * Using the ToolBox (TBD) 61 | * Graphics in a Window 62 | * Mini course on improving C syntax and form 63 | 64 | * Cross-compiling code for RISC OS 65 | * How to use CMake for Cross Compiling (Cameron) 66 | 67 | * Mini course on programming in Lua on RISC OS 68 | * Introduction to RiscLua (TBD) 69 | * Wimp Programming (TBD) 70 | * How to use the Toolbox (TBD) 71 | * How to use Fonts (both in full screen and Windows) 72 | * Graphics in a Window 73 | 74 | * Mini course on programming in Python on RISC OS 75 | * Let's start (Chris Johns) 76 | * Calling SWIs (Chris Johns) 77 | * How to use the GPIO on Raspberry Pi (TBD) 78 | * How to use the Toolbox (TBD) 79 | * Graphics in a Window 80 | 81 | * Mini course on designing multi-tasking applications on RISC OS 82 | * Cooperative Multitasking on RISC OS (TBD) 83 | * Code Slicing and how to write algorithms that are Cooperative Multitasking friendly (TBD) 84 | * Handling messages 85 | * The ToolBox (see each specific programming language) 86 | 87 | * Mini course on developing 2D games on RISC OS 88 | * Introduction to SDL on RISC OS and cross compiling (Cameron Cawley) 89 | 90 | * Mini course on programming in C++ on RISC OS? (TBD) 91 | 92 | * How to test and debug software on RISC OS 93 | * General code testing on RISC OS (Gerph) 94 | * Introduction to Report (Chris Johns) 95 | * How to use MemoryI and all the other debug modules (TBD) 96 | * How to use GDBServer for remote debugging (TBD) 97 | * Debugging code on RISC OS Pyromanic (Gerph) 98 | * Writing Unit Test using mUnit lib (Paolo) 99 | * Writing Unit Tests using Greatest libs (Paolo) 100 | * Debugging RISC OS using JTAG (Sprow?) 101 | 102 | ### Advanced 103 | 104 | * Using the Internet Stack with Norcroft C (TBD) 105 | * Using the Internet Stack with GCC (TBD) 106 | * Writing TaskModules (TBD) 107 | * Writing Device Drivers for RISC OS (TBD) 108 | * Writing DLLs for GCC (TBD) 109 | * Writing Demos for RISC OS (TBD) 110 | * Mini course on coding optimization for BBC BASIC programmers (TBD) 111 | * Mini course on coding optimization for C programmers (TBD) 112 | * Advanced Debugging techniques for BBC BASIC programmers (TBD) 113 | * Advanced Debugging techniques for C developers (TBD) 114 | * Advanced Debugging techniques for C++ developers 115 | * How to use Jeffrey's SMP library 116 | * Building RISC OS Operating System 117 | * How to create RISC OS ROM (Robert Sprowson) 118 | * Introduction to Simon Willcocks C kernel (Simon Willcocks) 119 | * Introduction to Simon Wilson Mesa/OpenGL port (Simon Wilson?) 120 | * Introduction to [Khronos Driver](https://www.riscosports.co.uk/raspberrypi/) (TBD) 121 | * Using ARM NEON instructions in BBC BASIC 122 | * Using ARM NEON instructions in C 123 | * Using Dynamic Linking in Lua 124 | * Creating new binary extensions for Lua 125 | * Creating new binary extensions for Python 126 | * Cross compiling software using GCCSDK 127 | * Developing RISC OS software on Linux/Windows/Mac/… (what editors, workflows, etc do you use, what tools make it easier – maybe several people could contribute) 128 | * Porting software using the GCCSDK autobuilder 129 | * PackMan, packaging and packaging infrastructure 130 | * GCC shared libraries and how they work 131 | 132 | ## Show and Tell 133 | 134 | * How people "do things" on RISC OS 135 | * Workflows, tools used etc. 136 | 137 | * Share your project, problems, solutions and questions 138 | -------------------------------------------------------------------------------- /doc/SideRequests.md: -------------------------------------------------------------------------------- 1 | # Side requests that need some extra thought to be delivered 2 | 3 | ## Req: Would it be possible to have a Unix-like "man" (manual) documentation tool for RISC OS? 4 | 5 | * Points to understand 6 | * Sync up with Gerph for his documentation project 7 | * Try to figure out a way to build a "man-like" documentation 8 | -------------------------------------------------------------------------------- /doc/attic/RISCOSCodingMeetings.md: -------------------------------------------------------------------------------- 1 | # RISC OS Coding Zoom Meetings 2 | 3 | As part of the effort in this repo we are also trying to organize a set of zoom meetings for people to share, discuss, present: 4 | 5 | * How-To code on RISC OS in various programming languages 6 | * How-To use tools and utilities to help programming workflows 7 | * Share personal workflows used to produce software for RISC OS 8 | * Explore possibilities and methodologies 9 | * Analyze existing code (where licensing allow this!) 10 | * Present solutions to problems from a coding perspective 11 | * Produce mini programming courses to help beginners to learn more 12 | * Promote the use of Open Source Tools to help new comers 13 | 14 | ## Meetings organization 15 | 16 | Each meeting is: 17 | 18 | * organized in 2 parts 19 | * **1st part/section (Beginners)** dedicated to learn how to code on RISC OS (presentations from various community members on how to code on RO in various languages) 20 | * **2nd part/section (Advanced)** dedicated to people to share their code, techniques, workflows etc. Everyone can take the mic here and share what we are working on and present projects (please note: it’s a coding meeting, so code needs to be showed! it’s not about selling things!), we can also go “round table” and everyone can share their progress and struggles in their coding journey/project. 21 | 22 | Meetings are recorded. 23 | 24 | Recordings will be split too, so people willing to watch on YouTube will have an easy life to find what they need. 25 | 26 | Video recording will be split where possible in small sections easier to follow and to be indexed on the Internet or subdivided in chapters where it's better to keep everything in one place. 27 | 28 | Meetings are informal. So, no need to prepare ultra-professional presentations, however using slides and diagrams to explain concepts is welcome and we recommend to ensure always to show code in a "show and tell" form. 29 | 30 | Presentations can be pre-recorded to help the presenter or to make it easy to show processes that may take long time, however, in these cases, we'd recommend the presenter to also be in the live meeting for the Q&A session at the end of their presentation. 31 | 32 | Meetings should take place once a month. Dates and time are being worked on at the moment. 33 | 34 | ## How can I present? 35 | 36 | It's very simple, just let us know what you'd like to present and give us an ideas of the time it will take you to be ready with your material, so we can schedule your presentation on the meetings' calendar. 37 | 38 | Ensure you have equipment to share your slides and code (doesn't necessarily needs to be live-code running on a system). 39 | Where a presentation is on a methodology and has no code, it's ok not to have code to share, but again if you need to present a product to a general audience then we'd recommend to use RISC OS general meetings which are organised quite often by all the various RISC OS clubs in UK and EU. Meetings here are to share coding knowledge and methodologies to solve problems, not to sell products. 40 | 41 | ## How can I request a meeting subject? 42 | 43 | At the moment the discussion is on the ROOL forum [here](https://www.riscosopen.org/forum/forums/5/topics/17493?page=1). However, given that a forum topic is hard to track over a long period of time, we recommend to use "Issues" menu here on GitHub at the top to open a "feature request". 44 | 45 | ## Types of subjects so far 46 | 47 | Have a look [here](RISCOSCodingMeetingsIdeas.md) for a detailed list of meeting subjects already requested. 48 | -------------------------------------------------------------------------------- /doc/attic/RISCOSCodingMeetingsSchedule.md: -------------------------------------------------------------------------------- 1 | # Scheduled Meetings 2 | 3 | ## meeting 2 - 4th of March 2023 4 | 5 | ### Beginner section - Basics of coding on RISC OS 6 | 7 | * Practical sessions: 8 | * Example: Turning On and Off caps lock on the keyboard (and an led using the GPIO on the Raspberry Pi) 9 | * In BBC BASIC 10 | * In DDE C 11 | * In DDE C++ 12 | * In GCC C 13 | * In GCC C++ 14 | * In RiscLua 15 | * In Python 16 | * In Perl 17 | * ARM Assembly (AArch32) 18 | 19 | 1 hour beginners section 20 | 21 | ### Advanced Section 22 | 23 | * Show and Tell, share your projects/problems and questions 24 | 25 | No official time limit 26 | 27 | -------------------------------------------------------------------------------------- 28 | 29 | ## meeting 1 - 21st of January 2023 30 | 31 | ### Beginner section - Getting the code 32 | 33 | * Why Git? 34 | * Practical sessions: 35 | * Using git on MS Windows (Rob Sprowson) 36 | * Using git with GCCSDK for cross compilation (Steve Fryatt) 37 | * Using git on macOS for RISC OS coding and Pyromanic (Gerph) 38 | * Using git on Linux for RISC OS coding with !OmniClient and Nettle (Paolo) 39 | * Using !SimpleGit on RISC OS (Cameron Cawley) 40 | * Questions session 41 | 42 | 1 hour beginners section 43 | 44 | ### Advanced Section 45 | 46 | * Show and Tell, share your projects/problems and questions 47 | 48 | No official time limit 49 | 50 | -------------------------------------------------------------------------------- /src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RISC-OS-Community/CodingOnRISC-OS/d5ed1fbcc4e50683612673c8608369083bb46c89/src/.gitkeep -------------------------------------------------------------------------------- /src/MkGCC.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is a special file that will be used to control automated code 4 | # analysis tools such as SonarQube, Coverity, etc. on GitHub. 5 | # This file is not meant to be executed by humans, but by automated 6 | # tools. 7 | # If you want to build the project, please use the MkGCC (note no .sh) 8 | # script instead or MkDDE on RISC OS. 9 | 10 | # MAKE SURE this file is calling your MakefileGCC with the correct 11 | # target and make sure your MakefileGCC uses the variable OS to 12 | # determine the target OS. 13 | 14 | current_dir="$1" 15 | if [ "$current_dir" == "" ]; then 16 | current_dir="$(pwd)" 17 | fi 18 | cd ${current_dir} 19 | 20 | # Display MakefielGCC 21 | cat ${current_dir}/MakeFileGCC 22 | 23 | # Make the artifacts 24 | make static OS=`uname -s` -f ${current_dir}/MakefileGCC 25 | -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | # Code Snippets 2 | 3 | In this section we are collecting some useful code snippets that may help coding on RISC OS in various languages. 4 | 5 | Each set of code snippets is organised by programming language name: 6 | 7 | ```text 8 | src 9 | | 10 | +-- BBC BASIC 11 | | 12 | +-- RiscLua 13 | | 14 | . 15 | . 16 | . 17 | ``` 18 | 19 | And, within the Language group they may be organised by activity, like: 20 | 21 | - WIMP examples 22 | - Drawing sprites 23 | - Using Draw format 24 | - Toolbox Gadgets 25 | -------------------------------------------------------------------------------- /tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RISC-OS-Community/CodingOnRISC-OS/d5ed1fbcc4e50683612673c8608369083bb46c89/tests/.gitkeep --------------------------------------------------------------------------------