Skip to content

Commit

Permalink
Bug fixes
Browse files Browse the repository at this point in the history
Co-Authored-By: RoccoLox Programs <[email protected]>
  • Loading branch information
TIny-Hacker and RoccoLoxPrograms committed Dec 27, 2022
1 parent 0f5cd89 commit 8559959
Show file tree
Hide file tree
Showing 4 changed files with 168 additions and 27 deletions.
2 changes: 1 addition & 1 deletion makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
NAME = CEaShell
APP_NAME = CEaShell
APP_VERSION = 5.0.0.0000
CEASHELL_VERSION = 0.84.1
CEASHELL_VERSION = 1.0
APPVAR_VERSION = 0
DESCRIPTION = "(C) 2022 RoccoLox & TIny_Hacker"
COMPRESSED = NO
Expand Down
113 changes: 113 additions & 0 deletions readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
Introduction
--------------------

CEaShell (pronounced like "Seashell") is a new shell for the TI-84 Plus CE.
It aims to provide a modern, sleek, and easy to use UI, which is understandable
by any user regardless of previous experience or calculator-related knowledge.
To get help, suggest a feature, or report a bug, join the discord!

Features
--------------------

* Program and OS app running
* Custom color themes and visual preferences
* Viewing of program information
* Modifying of file properties (Archiving/Unarchiving, Hiding/Unhiding, etc.)
* Editing of TI-BASIC programs
* Creating of programs and appvars
* OS enhancements
* Program icons and descriptions in the OS programs menu
* And many more!

Installation
--------------------

1. Download the latest version of CEaShell from the GitHub releases page
(https://github.com/roccoloxprograms/CEaShell/releases/latest).
2. Send APPINST.8xp, AppInstA.8xv and AppInstB.8xv to your calculator using TI-Connect CE
or TiLP.
3. Run prgmAPPINST from the programs menu. You will need to use the arTIfiCE jailbreak
(https://yvantt.github.io/arTIfiCE) if you are on an OS version 5.5 and above.
4. CEaShell will be installed in the apps menu.

Uninstalling
--------------------

1. Open the memory management menu by pressing [2nd], [+], [2].
2. Scroll down until you find an option "Apps".
3. Press [enter] and then find CEaShell.
4. Press [del] and then press [2].
5. Exit the memory management menu by pressing [clear].

Navigation
--------------------

Below is a table with keys and their various usage in CEaShell:

+---------------------------------------+--------------------------------------------------------+
| Key | Action performed |
+---------------------------------------+--------------------------------------------------------+
| [2nd] / [enter] | Run programs, toggle/select items in menus. |
| [↑], [↓], [←], [→] | Scroll through options or menus. |
| [y=] | Open/exit customization menu. |
| [graph] | Open/exit settings menu. |
| [alpha] / [window] / [zoom] / [trace] | View and modify file properites. |
| [del] | Delete currently selected file. |
| [mode] | Create a new file or copy the currently selected one. |
| [clear] | Exit CEaShell. |
| [a] - [z] | Jump to the program beginning with the letter pressed. |
| [on] | Turn off the calculator while remaining in the shell. |
+---------------------------------------+--------------------------------------------------------+

Shortcuts
--------------------

If the option "[on] key shortcuts" is enabled in CEaShell, the follow key combinations
will preform specific utilities in the OS:

+-----------------+-----------------------------------------------------------------+
| Key combination | Action performed |
+-----------------+-----------------------------------------------------------------+
| [on] + [prgm] | Launch CEaShell. |
| [on] + [sto →] | Invert OS colors ("Dark mode"). |
| [on] + [ln] | Un-invert OS colors. |
| [on] + [stat] | Turn off the calculator, and preserve where you were in the OS. |
| [on] + [graph] | Jump to a program label in the OS program editor. |
+-----------------+-----------------------------------------------------------------+

Building CEaShell
--------------------

Make sure you have installed the linker relocations branch of the
CE C Toolchain (https://github.com/ce-programming/toolchain).
CEaShell will not be able to compile using the main version.
You will also need to use the latest version of convimg (https://github.com/mateoconlechuga/convimg).

1. Clone CEaShell with the app_tools submodule by running
`git clone --recurse-submodules https://github.com/RoccoLoxPrograms/CEaShell`
2. If you are using an OS that uses python3 insead of python, open "app_tools/makefile"
and change `PYTHON_VER := python` to `PYTHON_VER := python3`.
3. `cd` into the cloned repository, and run `make gfx`.
4. Once complete, run `make`. The compiled binaries will be in the newly created "bin" directory.


Bugs
--------------------

If you encounter a bug while using CEaShell, don't hesitate to make an issue or report it on the
Discord server (https://discord.gg/RDTtu258fW). Feel free to request features or ask for help
on the discord or in the Cemetech topic (https://ceme.tech/t18820) as well!

Translation
--------------------

Currently, there is a French translation of CEaShell which is translated by Shadow (https://github.com/Bryankaveen).
You can find it here: https://github.com/RoccoLoxPrograms/CEaShell/tree/french-translation

Credits
--------------------

A more detailed credits can be found in CEaShell. app_tools is created by commandblockguy (https://github.com/commandblockguy/),
and some of the assembly was written by MateoConLechuga (https://github.com/mateoconlechuga/).

© 2022 RoccoLox Programs and TIny_Hacker
76 changes: 52 additions & 24 deletions src/asm/runProgram.asm
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ returnIsAsm := backupPrgmName + 9
returnEditLocked := returnIsAsm + 1
returnCEaShell := returnEditLocked + 1
lockStatus := ti.pixelShadow2 + 3
quitOrOff := lockStatus + 1

sysHookFlg := 52
appInpPrmptInit := 0
Expand Down Expand Up @@ -80,10 +81,12 @@ _runProgram:
ld de, ti.OP1 + 1
ld bc, 8
ldir ; move name to OP1
ld hl,execute_hook
call ti.SetHomescreenHook

_continueRun:
ld a, $bb
ld (quitOrOff), a
ld hl,execute_hook
call ti.SetHomescreenHook
call _isGetCSCHookInstalled
cp a, 1
call z, ti.ClrGetKeyHook
Expand Down Expand Up @@ -354,12 +357,12 @@ _basicProgram:
jp ti.ParseInp

_return:
call _reinstallGetCSCHook
call ti.PopErrorHandler
xor a, a

.error:
push af
call _reinstallGetCSCHook
res ti.progExecuting, (iy + ti.newDispF)
res ti.cmdExec, (iy + ti.cmdFlags)
res ti.allowProgTokens, (iy + ti.newDispF)
Expand Down Expand Up @@ -389,6 +392,9 @@ _return:
jp z, _reloadApp

.quitNoApp:
ld a, (quitOrOff)
cp a, $bb
jp nz, ti.JForceCmdNoChar
call _removeStopHook
res ti.onInterrupt, (iy + ti.onFlags)
call ti.ClrTxtShd
Expand Down Expand Up @@ -526,13 +532,21 @@ execute_vectors:
ld (ti.currLastEntry),a
bit appInpPrmptInit,(iy + ti.apiFlg2)
jr nz,.aipi
bit ti.monAbandon, (iy + ti.monFlags)
jr nz, .reloadHooks
call ti.ClrHomescreenHook
call ti.ForceFullScreen
.aipi:
call ti.ReloadAppEntryVecs
call ti.PutAway
ld b,0
ret
.reloadHooks:
call ti.DeleteTempPrograms
call ti.CleanAll
call _reinstallGetCSCHook
call _reinstallHomescreenHook
jr .aipi

_showError:
xor a, a
Expand Down Expand Up @@ -705,33 +719,18 @@ execute_hook:
db $83
cp a,3
ret nz
call ti.ReleaseBuffer
ld iy, ti.flags
call _reinstallGetCSCHook
call ti.ClrHomescreenHook
ld hl, appVarName ; restore other homescreen hook if need be
call ti.Mov9ToOP1
call ti.ChkFindSym
jr c, .continue
call ti.ChkInRam
jr z, .inRam
ld hl, 10
add hl, de
ld a, c
ld bc, 0
ld c, a
add hl, bc
ex de, hl

.inRam:
ld hl, 10
add hl, de
ld a, 1
cp a, (hl)
call z, _installHomescreenHook
call _reinstallHomescreenHook

.continue:
bit ti.monAbandon, (iy + ti.monFlags)
jr nz, .turningOff
bit appInpPrmptDone,(iy + ti.apiFlg2)
res appInpPrmptDone,(iy + ti.apiFlg2)
ld a, 0
ld (quitOrOff), a
jp z, _return.quit
call ti.ReloadAppEntryVecs
ld hl,execute_vectors
Expand All @@ -741,6 +740,11 @@ execute_hook:
ld (ti.cxCurApp),a
ret

.turningOff:
bit appInpPrmptDone,(iy + ti.apiFlg2)
res appInpPrmptDone,(iy + ti.apiFlg2)
jp z, _return.quit

_removeExecuteHookInstalled:
ld iy, ti.flags
bit ti.homescreenHookActive, (iy + ti.hookflags2) ; check if a menu hook is installed
Expand Down Expand Up @@ -776,6 +780,30 @@ _reinstallGetCSCHook:
call _installGetCSCHookCont
ret

_reinstallHomescreenHook:
call ti.ClrHomescreenHook
ld hl, appVarName ; restore other homescreen hook if need be
call ti.Mov9ToOP1
call ti.ChkFindSym
ret c
call ti.ChkInRam
jr z, .inRam
ld hl, 10
add hl, de
ld a, c
ld bc, 0
ld c, a
add hl, bc
ex de, hl

.inRam:
ld hl, 10
add hl, de
ld a, 1
cp a, (hl)
call z, _installHomescreenHook
ret

_lcdNormal:
ld hl, ti.vRam
ld bc, ((ti.lcdWidth * ti.lcdHeight) * 2) + 0
Expand Down
4 changes: 2 additions & 2 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
* By RoccoLox Programs and TIny_Hacker
* Copyright 2022
* License: GPL-3.0
* Last Build: December 26, 2022
* Version: 0.84.1
* Last Build: December 27, 2022
* Version: 1.0
*
* --------------------------------------
**/
Expand Down

0 comments on commit 8559959

Please sign in to comment.