Pardon my English, folks. nikitouzz will be translating this post soon.
Note: There is a reward of 1 BTC ($111 USD at the time of writing) to the first person to submit a working color KnightOS kernel to sir@cmpwn.com. If you are unfamiliar with Bitcoin, read up here.
Hi there! I need some help getting support for the TI-84+ Color Silver Edition in KnightOS. I started working on it a few weeks ago, and here's the current status of the color project:
Everything works great, except for the color LCD. I cannot get it to start up correctly. Here's what the color version of KnightOS looks like:

Note that the kernel works perfectly in KermM's jsTIfied emulator, which has poor emulation for the color LCD.
KnightOS Technical Background
For those of you unaware of how KnightOS is developed, here's some insight. The source code is hosted on and managed on GitHub, and is written mostly in z80 assembly. There are a number of git repositories:
There are more, but these ones are the ones that are important to KnightOS color support.
The relevant code
Color support is being worked on in the `color` git branch. The important code is this, which is meant to initialize the LCD:
This code is derived from a combination of reading wikiti, the LCD datasheet, and TIOS disassemblies. The code can be found in the display-color.asm file of the kernel repository.
How you can help
Want to help out? Here's how you can:
Download the latest version of the kernel with color support. If you're familiar with git and comfortable in a command line, use "git clone --recursive git://github.com/KnightSoft/KnightOS.git" and navigate to the kernel directory, then run "git checkout color".
Windows
Install cygwin and make sure you install GNU Make with it. Open up a cygwin terminal and navigate to where you have saved the kernel's source code. Run "make TI84pCSE" from that directory to create a kernel ROM. You can then create an 8cu upgrade file by running "CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8cu 00".
Linux/Mac
Make sure you have the latest version of tilp. Install mono (Arch: yaourt -S mono, Debian/Ubuntu: apt-get install mono-complete, Fedora: yum install mono). Run make TI84pCSE from the source code's root folder. Build an 8xu upgrade file with "mono CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8xu 00".
Testing
Download BrandonW's UOSRECV tool and send it to your calculator. Run "Asm(prgmUOSRECV" and wait for it to prompt for an OS. Send the upgrade with TI-Connect or tilp. Note that tilp support for the 84+ CSE is poor, and it may not work correctly. It is suggested that you press reset once more after receving the OS, instead of just jumping straight into it from the boot code's OS receiving code.
After some basic system initialization, the color kernel jumps into a test loop. The LCD backlight should blink 10 times, then the calculator will wait for you to press the ON key. The backlight will blink another 10 times and you'll enter the debug loop. You can press different keys to test out different things:
Pressing C should ideally initialize the LCD and set it to a solid RED color.
The code for the debug loop can be found at the bottom of boot.asm. Feel free to modify any part of the kernel to help figure out what's going on.
So, want to make a quick bitcoin and help get third party operating systems onto the 84+ CSE? Any questions can be directed at sir@cmpwn.com, and I'll be keeping an eye on the threads in each forum I see this posted in.
Note: There is a reward of 1 BTC ($111 USD at the time of writing) to the first person to submit a working color KnightOS kernel to sir@cmpwn.com. If you are unfamiliar with Bitcoin, read up here.
Hi there! I need some help getting support for the TI-84+ Color Silver Edition in KnightOS. I started working on it a few weeks ago, and here's the current status of the color project:
- You can create KnightOS 8cu files and send them with BrandonW's UOSRECV tool
- Nearly all existing KnightOS features work
- The screen is not initialized correctly
Everything works great, except for the color LCD. I cannot get it to start up correctly. Here's what the color version of KnightOS looks like:

Note that the kernel works perfectly in KermM's jsTIfied emulator, which has poor emulation for the color LCD.
KnightOS Technical Background
For those of you unaware of how KnightOS is developed, here's some insight. The source code is hosted on and managed on GitHub, and is written mostly in z80 assembly. There are a number of git repositories:
- kernel, which is the core of KnightOS and does nothing on its own
- KnightOS is built on the kernel and provides the "KnightOS experience"
- CreateUpgrade creates and signs 8xu (and 73u and 8cu) upgrade files
There are more, but these ones are the ones that are important to KnightOS color support.
The relevant code
Color support is being worked on in the `color` git branch. The important code is this, which is meant to initialize the LCD:
- Code: Select all
; Destroys C
; A: Register
; HL: Value
setLcdRegister:
out (0x10), a \ out (0x10), a
ld c, 0x11
out (c), h
out (c), l
ret
colorLcdOn:
; TODO: Research this more, it's probably not all required and we might want some of it done different.
; Could also probably be optimized if we didn't use this lcdout macro, but I'll save that for when the
; LCD is more well understood and everything is working.
lcdout(0x01, 0x0000) ; Reset Out.Ctrl.1: Ensure scan directions are not reversed
lcdout(0x02, 0x0200) ; LCD Driving Control: Sets inversion mode=line inversion and disables it
lcdout(0x03, 0x1038) ; Init. Entry Mode: Cursor moves up/down, down, left, disable
lcdout(0x08, 0x0202) ; Set front & back porches: 2 blank lines top & bottom
lcdout(0x09, 0x0000) ; Reset Disp.Ctrl.3: Resets scanning stuff and off-screen voltage
lcdout(0x0A, 0x0000) ; Disp.Ctrl.4: No FMARK
lcdout(0x0C, 0x0000) ; RGB Disp.: Off
lcdout(0x0D, 0x0000) ; FMARK position: Off
lcdout(0x60, 0x2700) ; Driver Output Ctrl. 2
lcdout(0x61, 0x0001) ; Base Image Display Ctrl: Use color inversion, no vertical scroll, reset voltage in non-display level
lcdout(0x6A, 0x0000) ; Reset Vertical Scroll Ctrl.
call colorLcdWait
lcdout(0x10, 0x1190) ; Init Pwr.Ctrl.1: Exit standby, fiddle with voltages, enable
lcdout(0x11, 0x0227) ; Pwr.Ctrl.2: Configure voltages
call colorLcdWait
lcdout(0x12, 0x008C) ; Pwr.Ctrl.3: More voltages
call colorLcdWait
lcdout(0x13, 0x1800) ; Pwr.Ctrl.4: Take a wild guess
lcdout(0x29, 0x0030) ; Pwr.Ctrl.7: I'm not an LCD engineer, don't ask me.
lcdout(0x2B, 0x000B) ; Set frame rate to 70
call colorLcdWait
; Don't touch the gamma control ones, no one knows what they mean
lcdout(0x30, 0x0000) ; Gamma Control 1
lcdout(0x31, 0x0305) ; Gamma Control 2
lcdout(0x32, 0x0002) ; Gamma Control 3
lcdout(0x35, 0x0301) ; Gamma Control 4
lcdout(0x36, 0x0004) ; Gamma Control 5
lcdout(0x37, 0x0507) ; Gamma Control 6
lcdout(0x38, 0x0204) ; Gamma Control 7
lcdout(0x39, 0x0707) ; Gamma Control 8
lcdout(0x3C, 0x0103) ; Gamma Control 9
lcdout(0x3D, 0x0004) ; Gamma Control 10
lcdout(0x50, 0x0000) ; Horiz.Win.Start: 0
lcdout(0x51, 0x00EF) ; Horiz.Win.End: 239 = 240-1
lcdout(0x52, 0x0000) ; Vert.Win.Start: 0
lcdout(0x53, 0x013F) ; Vert.Win.End: 319 = 320-1
call colorLcdWait
lcdout(0x07, 0x0133) ; Disp.Ctrl.1: LCD scan & light on, ready to enter standby
; Turn on backlight
in a, (0x3A)
set 5, a
out (0x3A), a
; Values found in TIOS, but not wikiti:
;lcdout(0x07, 0x0000) ; Settings modes, clears it for some reason?
;call colorLcdWait
;lcdout(0x10, 0x07F0) ; More power control
;call colorLcdWait
;lcdout(0x10, 0x07F1) ; Ditto
;call colorLcdWait
lcdout(0x03, 0b1000000010111000) ; Entry mode the way we want it
ret
colorLcdOff:
lcdout(0x07, 0x00)
call colorLcdWait
lcdout(0x10, 0x07F0)
call colorLcdWait
lcdout(0x10, 0x07F1)
; Turn off backlight
in a, (0x3A)
res 5, a
out (0x3A), a
ret
; 40 milliseconds-ish @ 6 MHz
colorLcdWait:
ld b, 0x7F
ld c, 0xFF
ld hl, 0x8000
.loop:
ld a, (hl)
ld (hl), a
dec bc
ld a, c
or b
jp nz, .loop
ret
This code is derived from a combination of reading wikiti, the LCD datasheet, and TIOS disassemblies. The code can be found in the display-color.asm file of the kernel repository.
How you can help
Want to help out? Here's how you can:
Download the latest version of the kernel with color support. If you're familiar with git and comfortable in a command line, use "git clone --recursive git://github.com/KnightSoft/KnightOS.git" and navigate to the kernel directory, then run "git checkout color".
Windows
Install cygwin and make sure you install GNU Make with it. Open up a cygwin terminal and navigate to where you have saved the kernel's source code. Run "make TI84pCSE" from that directory to create a kernel ROM. You can then create an 8cu upgrade file by running "CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8cu 00".
Linux/Mac
Make sure you have the latest version of tilp. Install mono (Arch: yaourt -S mono, Debian/Ubuntu: apt-get install mono-complete, Fedora: yum install mono). Run make TI84pCSE from the source code's root folder. Build an 8xu upgrade file with "mono CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8xu 00".
Testing
Download BrandonW's UOSRECV tool and send it to your calculator. Run "Asm(prgmUOSRECV" and wait for it to prompt for an OS. Send the upgrade with TI-Connect or tilp. Note that tilp support for the 84+ CSE is poor, and it may not work correctly. It is suggested that you press reset once more after receving the OS, instead of just jumping straight into it from the boot code's OS receiving code.
After some basic system initialization, the color kernel jumps into a test loop. The LCD backlight should blink 10 times, then the calculator will wait for you to press the ON key. The backlight will blink another 10 times and you'll enter the debug loop. You can press different keys to test out different things:
- A: Backlight ON
- B: Backlight OFF
- C: Initialize the LCD (call colorLcdOn)
- D: Turn off the device
Pressing C should ideally initialize the LCD and set it to a solid RED color.
The code for the debug loop can be found at the bottom of boot.asm. Feel free to modify any part of the kernel to help figure out what's going on.
So, want to make a quick bitcoin and help get third party operating systems onto the 84+ CSE? Any questions can be directed at sir@cmpwn.com, and I'll be keeping an eye on the threads in each forum I see this posted in.
Pardon pour mon anglais, Nikitouzz va traduire ce post prochainement !
Note: il y a une récompense de 1 BTC ($111 USD au moment ou j’écris) a la première personne qui m'envoie le kernel KnightOS qui fonctionne correctement sur la 84+CSE sir@cmpwn.com. Si vous n’êtes pas familier avec les Bitcoin, lisez ceci : here.
Salut tout le monde ! J'ai besoin d'aide pour l'ajout du support de knightOS sur les nouvelles 84+Cse. J'ai commencé a porter knighotOS il y a quelque semaine de cela, et le statu current du projet est le suivant :
Tout marche très bien excepté initialisation de l'écran LCD. Je ne peux pas démarrer KnightOS correctement. La version de knightOS pour 84+Cse ressemble a quelque chose comme ca:

Notez que l'OS marche parfaitement sur l'emulateur de Kerm Martian Jstified.
KnightOS
Pour ceux d'entre vous ignorent comment KnightOS est développé, voici un aperçu. Le code source est hébergé et géré sur GitHub, et est écrite en assembleur Z80. Il ya un certain nombre de repertoire :
Il ya plus, mais ceux-ci sont ceux qui sont importants pour le soutien de couleur KnightOS.
The relevant code
Le support de la couleur devrais fonctionner a partir du fichier 'color' dans le dossiers "git branch" (par contre la j'ai pas reussis a traduire je crois....)
Ce code est dérivée d'une combinaison de lecture du wikiti, du LCD datasheet, et du TiOS dessasemblés. Le code peut être trouvé dans le fichier display-color.asm fichier du noyau.
Comment pouvez vous aider ?
Vous voulez nous aider? Voici comment vous pouvez:
Télécharger La derniere version de l'OS qui supporte la couleur. Si vous êtes familier avec git et confortable avec une ligne de commande, utilisez "git clone - récursif git :/ / github.com / KnightSoft / KnightOS.git" et accédez au répertoire du noyau, puis lancez "git checkout color".
Windows
Installez Cygwin et assurez-vous d'installer GNU Make avec elle. Ouvrez un terminal Cygwin et accédez à l'endroit où vous avez sauvegardé le code source du noyau. Exécuter "make TI84pCSE" à partir de ce répertoire pour créer une ROM du noyau. Vous pouvez ensuite créer un fichier de mise à niveau 8CU en exécutant "CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8cu 00".
Linux/Mac
Assurez-vous que vous disposez de la dernière version de tilp. Installation mono (Arch: yaourt-S mono, Debian / Ubuntu: apt-get install mono-complete, Fedora: yum install mono). Exécutez make TI84pCSE à partir du dossier racine du code source. Création d'un fichier de mise à niveau 8XU avec "mono CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8xu 00".
Test
Télécharger le programme de BrandonW UOSRECV et envoyez le sur votre calculatrice. Exécuter "Asm (prgmUOSRECV)" et attendez qu'il invite pour un OS. Envoyer la mise à niveau avec TI-Connect ou tilp. Notez que le support de tilp pour le 84+CSE est pauvre, et il peut ne pas fonctionner correctement. Il est suggéré que vous appuyez sur reset une fois de plus après avoir reçu le système d'exploitation, au lieu de simplement sauter directement dans le Code de la réception OS du code de démarrage.
Après une initialisation du système de base, l'OS entre dans une boucle de test. Le rétro-éclairage LCD devrait clignoter 10 fois, puis la calculatrice devrais attendre que vous appuyiez sur la touche ON. Le rétro-éclairage clignote encore 10 fois et vous entrerez dans la boucle de débogage. Vous pouvez appuyer sur des touches différentes pour tester différentes choses:
Appuyez sur C devrait idéalement initialiser le LCD et le mettre à une couleur rouge solide.
Le code de la boucle de débogage peut être trouvé au bas de boot.asm. N'hésitez pas à modifier n'importe quelle partie du noyau pour aider à comprendre ce qui se passe.
Donc, vous voulez un bitcoin rapide et m'aider à obtenir un systèmes d'exploitation tiers sur la 84 + CSE ? Toutes les questions peuvent être adressées à sir@cmpwn.com, et je vais garder un oeil sur les discussions dans chaque forum que je vois !
Note: il y a une récompense de 1 BTC ($111 USD au moment ou j’écris) a la première personne qui m'envoie le kernel KnightOS qui fonctionne correctement sur la 84+CSE sir@cmpwn.com. Si vous n’êtes pas familier avec les Bitcoin, lisez ceci : here.
Salut tout le monde ! J'ai besoin d'aide pour l'ajout du support de knightOS sur les nouvelles 84+Cse. J'ai commencé a porter knighotOS il y a quelque semaine de cela, et le statu current du projet est le suivant :
- Vous pouvez crée un fichier KnightOS .8cu et l'envoyer sur votre calculatrice grace a l'outils de BrandonW.
- Toutes les features de KnightOS sont presque présentes.
- L'écran ne s'initialise pas correctement.
Tout marche très bien excepté initialisation de l'écran LCD. Je ne peux pas démarrer KnightOS correctement. La version de knightOS pour 84+Cse ressemble a quelque chose comme ca:

Notez que l'OS marche parfaitement sur l'emulateur de Kerm Martian Jstified.
KnightOS
Pour ceux d'entre vous ignorent comment KnightOS est développé, voici un aperçu. Le code source est hébergé et géré sur GitHub, et est écrite en assembleur Z80. Il ya un certain nombre de repertoire :
- kernel, qui est le Noyau même de KnightOS et qui tout seul ne fais rien.
- KnightOS est construit sur le noyau et fournit "l'expérience KnightOS"
- CreateUpgrade crée et signe 8XU (et 73U et 8CU) pour les fichiers de mise à jour
Il ya plus, mais ceux-ci sont ceux qui sont importants pour le soutien de couleur KnightOS.
The relevant code
Le support de la couleur devrais fonctionner a partir du fichier 'color' dans le dossiers "git branch" (par contre la j'ai pas reussis a traduire je crois....)
- Code: Select all
; Destroys C
; A: Register
; HL: Value
setLcdRegister:
out (0x10), a \ out (0x10), a
ld c, 0x11
out (c), h
out (c), l
ret
colorLcdOn:
; TODO: Research this more, it's probably not all required and we might want some of it done different.
; Could also probably be optimized if we didn't use this lcdout macro, but I'll save that for when the
; LCD is more well understood and everything is working.
lcdout(0x01, 0x0000) ; Reset Out.Ctrl.1: Ensure scan directions are not reversed
lcdout(0x02, 0x0200) ; LCD Driving Control: Sets inversion mode=line inversion and disables it
lcdout(0x03, 0x1038) ; Init. Entry Mode: Cursor moves up/down, down, left, disable
lcdout(0x08, 0x0202) ; Set front & back porches: 2 blank lines top & bottom
lcdout(0x09, 0x0000) ; Reset Disp.Ctrl.3: Resets scanning stuff and off-screen voltage
lcdout(0x0A, 0x0000) ; Disp.Ctrl.4: No FMARK
lcdout(0x0C, 0x0000) ; RGB Disp.: Off
lcdout(0x0D, 0x0000) ; FMARK position: Off
lcdout(0x60, 0x2700) ; Driver Output Ctrl. 2
lcdout(0x61, 0x0001) ; Base Image Display Ctrl: Use color inversion, no vertical scroll, reset voltage in non-display level
lcdout(0x6A, 0x0000) ; Reset Vertical Scroll Ctrl.
call colorLcdWait
lcdout(0x10, 0x1190) ; Init Pwr.Ctrl.1: Exit standby, fiddle with voltages, enable
lcdout(0x11, 0x0227) ; Pwr.Ctrl.2: Configure voltages
call colorLcdWait
lcdout(0x12, 0x008C) ; Pwr.Ctrl.3: More voltages
call colorLcdWait
lcdout(0x13, 0x1800) ; Pwr.Ctrl.4: Take a wild guess
lcdout(0x29, 0x0030) ; Pwr.Ctrl.7: I'm not an LCD engineer, don't ask me.
lcdout(0x2B, 0x000B) ; Set frame rate to 70
call colorLcdWait
; Don't touch the gamma control ones, no one knows what they mean
lcdout(0x30, 0x0000) ; Gamma Control 1
lcdout(0x31, 0x0305) ; Gamma Control 2
lcdout(0x32, 0x0002) ; Gamma Control 3
lcdout(0x35, 0x0301) ; Gamma Control 4
lcdout(0x36, 0x0004) ; Gamma Control 5
lcdout(0x37, 0x0507) ; Gamma Control 6
lcdout(0x38, 0x0204) ; Gamma Control 7
lcdout(0x39, 0x0707) ; Gamma Control 8
lcdout(0x3C, 0x0103) ; Gamma Control 9
lcdout(0x3D, 0x0004) ; Gamma Control 10
lcdout(0x50, 0x0000) ; Horiz.Win.Start: 0
lcdout(0x51, 0x00EF) ; Horiz.Win.End: 239 = 240-1
lcdout(0x52, 0x0000) ; Vert.Win.Start: 0
lcdout(0x53, 0x013F) ; Vert.Win.End: 319 = 320-1
call colorLcdWait
lcdout(0x07, 0x0133) ; Disp.Ctrl.1: LCD scan & light on, ready to enter standby
; Turn on backlight
in a, (0x3A)
set 5, a
out (0x3A), a
; Values found in TIOS, but not wikiti:
;lcdout(0x07, 0x0000) ; Settings modes, clears it for some reason?
;call colorLcdWait
;lcdout(0x10, 0x07F0) ; More power control
;call colorLcdWait
;lcdout(0x10, 0x07F1) ; Ditto
;call colorLcdWait
lcdout(0x03, 0b1000000010111000) ; Entry mode the way we want it
ret
colorLcdOff:
lcdout(0x07, 0x00)
call colorLcdWait
lcdout(0x10, 0x07F0)
call colorLcdWait
lcdout(0x10, 0x07F1)
; Turn off backlight
in a, (0x3A)
res 5, a
out (0x3A), a
ret
; 40 milliseconds-ish @ 6 MHz
colorLcdWait:
ld b, 0x7F
ld c, 0xFF
ld hl, 0x8000
.loop:
ld a, (hl)
ld (hl), a
dec bc
ld a, c
or b
jp nz, .loop
ret
Ce code est dérivée d'une combinaison de lecture du wikiti, du LCD datasheet, et du TiOS dessasemblés. Le code peut être trouvé dans le fichier display-color.asm fichier du noyau.
Comment pouvez vous aider ?
Vous voulez nous aider? Voici comment vous pouvez:
Télécharger La derniere version de l'OS qui supporte la couleur. Si vous êtes familier avec git et confortable avec une ligne de commande, utilisez "git clone - récursif git :/ / github.com / KnightSoft / KnightOS.git" et accédez au répertoire du noyau, puis lancez "git checkout color".
Windows
Installez Cygwin et assurez-vous d'installer GNU Make avec elle. Ouvrez un terminal Cygwin et accédez à l'endroit où vous avez sauvegardé le code source du noyau. Exécuter "make TI84pCSE" à partir de ce répertoire pour créer une ROM du noyau. Vous pouvez ensuite créer un fichier de mise à niveau 8CU en exécutant "CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8cu 00".
Linux/Mac
Assurez-vous que vous disposez de la dernière version de tilp. Installation mono (Arch: yaourt-S mono, Debian / Ubuntu: apt-get install mono-complete, Fedora: yum install mono). Exécutez make TI84pCSE à partir du dossier racine du code source. Création d'un fichier de mise à niveau 8XU avec "mono CreateUpgrade.exe TI84pCSE bin/kernel-TI84pCSE.rom 0F.key kernel.8xu 00".
Test
Télécharger le programme de BrandonW UOSRECV et envoyez le sur votre calculatrice. Exécuter "Asm (prgmUOSRECV)" et attendez qu'il invite pour un OS. Envoyer la mise à niveau avec TI-Connect ou tilp. Notez que le support de tilp pour le 84+CSE est pauvre, et il peut ne pas fonctionner correctement. Il est suggéré que vous appuyez sur reset une fois de plus après avoir reçu le système d'exploitation, au lieu de simplement sauter directement dans le Code de la réception OS du code de démarrage.
Après une initialisation du système de base, l'OS entre dans une boucle de test. Le rétro-éclairage LCD devrait clignoter 10 fois, puis la calculatrice devrais attendre que vous appuyiez sur la touche ON. Le rétro-éclairage clignote encore 10 fois et vous entrerez dans la boucle de débogage. Vous pouvez appuyer sur des touches différentes pour tester différentes choses:
- A: Backlight ON
- B: Backlight OFF
- C: Initialize the LCD (call colorLcdOn)
- D: Turn off the device
Appuyez sur C devrait idéalement initialiser le LCD et le mettre à une couleur rouge solide.
Le code de la boucle de débogage peut être trouvé au bas de boot.asm. N'hésitez pas à modifier n'importe quelle partie du noyau pour aider à comprendre ce qui se passe.
Donc, vous voulez un bitcoin rapide et m'aider à obtenir un systèmes d'exploitation tiers sur la 84 + CSE ? Toutes les questions peuvent être adressées à sir@cmpwn.com, et je vais garder un oeil sur les discussions dans chaque forum que je vois !