GithubHelp home page GithubHelp logo

zardam / nw-external-apps Goto Github PK

View Code? Open in Web Editor NEW
12.0 4.0 39.0 129.71 MB

External application installer for N110 calculators

JavaScript 1.49% CSS 0.06% HTML 22.21% Python 0.01% Makefile 1.54% C 10.32% C++ 11.53% Shell 0.95% Scheme 0.01% M4 0.48% Scilab 0.01% TeX 10.09% Roff 0.87% Perl 0.16% GDB 0.01% PostScript 38.80% Yacc 0.10% sed 0.01% Objective-C 1.39% Batchfile 0.01%

nw-external-apps's Introduction

Epsilon

The base firmware image is a fork of https://github.com/numworks/epsilon including the "external" application and an API for accessing base functionality of epsilon.

The modified sources can be found here : https://github.com/Delta-NumWorks/delta/tree/external

If something goes wrong

Do an official firmware upgrade. Follow the instructions on https://workshop.numworks.com/devices/upgrade. You can always restore the calculator using this method.

I'm not affiliated with NumWorks. If your calculator is buggy when using this firmware, please restore the official one.

Included applications

KhiCAS

The port included here is a port from the delta firmware : https://github.com/Delta-NumWorks/delta/tree/delta

Periodic

This is a port of https://github.com/M4xi1m3/nw-atom

Nofrendo

This is a port of Nofrendo from https://www.baisoku.org/

Developer info

Technical concepts

  • The firmware part is just a regular application called "External", looking for a tar archive at address 0x90200000. If found, each file is displayed in a menu.
  • To launch a file, the external application fetches the firsts 4 bytes of the file, and use it as a function pointer to the address of the entrypoint. The entrypoint is then called with an array of function pointers as en API, and a pointer to a pre-allocated heap.
  • Each application is totally independent (and needs to bring its own libc, ...). data and bss sections are allocated in ITCM RAM, and the heap is pre-allocated from epsilon. The state of the application is totally reset upon entry.
  • To build a usable tar archive, relocation needs to be done to account the real adresses in flash of the binaries. There is a script called "archive" in this repository, which calls the linker on partially linked elf, to build final correctly relocated elf files (then added to the tar archive).
  • The file in the tar must be marked as executable to be executable.

nw-external-apps's People

Contributors

lapingenieur avatar m4xi1m3 avatar quentinguidee avatar zardam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nw-external-apps's Issues

Licensing?

So, after digging deeper in that repository, I found one massive issue : no license is provided for the code you wrote yourself. Plus, this repository being a mixed mess of different licenses (GNU GPLv2, MIT, CC-BY-SA-NC, etc...) you should consider creating either a section in your README listing every license of every software you use, or creating a dedicated LICENSE file with everything.

I'mm willing to do that as a PR, if you don't have time to do it. Just tell which license you want on your code? (MIT would be a good option, as it's permissive and simple).

How to delete an installed external app

I installed Omega on my numworks calculator and installed external app "Periodic" and "KhiCAS" via web. But I found no matter how I re-flash the Omega image, these 2 apps always exist.
I tried flash back to factory image and re-flash Omega, these 2 apps are still there.
Is there a way to get rid of them?

WebUsb not detected on chromium on mac

WebUsb is not detected on chromium on mac. It is on Linux Debian.
It says "'Your browser doesn't support WebUsb, please install Chromium", but the official Numworks website has no problem to transfert scripts so I think this issue come from this page.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.