Heller peeps!
After a few days of research, I have managed to find these forum posts:
https://www.cemetech.net/forum/viewtopic.php?p=273482#273482
https://www.cemetech.net/forum/viewtopic.php?t=15110&start=0
https://www.cemetech.net/forum/viewtopic.php?p=274349
https://www.cemetech.net/forum/viewtopic.php?t=14860&start=0
https://www.cemetech.net/forum/viewtopic.php?p=249075
All of them have something to do with using the USB port of a TI-84 CE Plus for serial interface.
I have managed to install CEdev, Inno, and MinGW on my PC. I have CommandBlockGuy's library collection and I am ready to install... except for one problem.
I've been using the
toolchain wiki, but every time I've tried running the "mingw32-make" command, or the "cd toolchain" command, it has failed to run the command or find the toolchain. I have managed to cd the toolchain manually, and I managed to run what looks like the file converter to turn .txt, .c, etc. files into .8x* files. However I just don't know what I've done wrong. I have set CEdev and MinGW to path, although I couldn't find any /bin folders in Inno to add, so I assume I've made a stupid mistake. Does anyone have any ideas on what steps I need to take? I'm using Windows 10. Any help's appreciated!
The srldrvce branch is a bit broken right now as we've mostly been working on (or waiting on, in my case) the LLVM branch recently.
I think that you could probably manually add the libraries to an existing toolchain install by doing the following (not recommended if you can get the build working):
Create CEdev/lib/libload/srldrvce.lib with these contents:
Code: library "SRLDRVCE", 0
export srl_Init ; 0
export srl_SetRate ; 3
export srl_Available ; 6
export srl_Read ; 9
export srl_Write ; 12
export srl_Read_Blocking ; 15
export srl_Write_Blocking ; 18
export srl_GetCDCStandardDescriptors ; 21
Create CEdev/lib/libload/usbdrvce.lib with these contents:Code: library "USBDRVCE", 0
export usb_Init ; 0
export usb_Cleanup ; 3
export usb_PollTransfers ; 6
export usb_HandleEvents ; 9
export usb_WaitForEvents ; 12
export usb_WaitForInterrupt ; 15
export usb_RefDevice ; 18
export usb_UnrefDevice ; 21
export usb_GetDeviceHub ; 24
export usb_SetDeviceData ; 27
export usb_GetDeviceData ; 30
export usb_GetDeviceFlags ; 33
export usb_FindDevice ; 36
export usb_ResetDevice ; 39
export usb_DisableDevice ; 42
export usb_GetDeviceAddress ; 45
export usb_GetDeviceSpeed ; 48
export usb_GetConfigurationDescriptorTotalLength ; 51
export usb_GetDescriptor ; 54
export usb_SetDescriptor ; 57
export usb_GetStringDescriptor ; 60
export usb_SetStringDescriptor ; 63
export usb_GetConfiguration ; 66
export usb_SetConfiguration ; 69
export usb_GetInterface ; 72
export usb_SetInterface ; 75
export usb_ClearEndpointHalt ; 78
export usb_GetDeviceEndpoint ; 81
export usb_GetEndpointDevice ; 84
export usb_SetEndpointData ; 87
export usb_GetEndpointData ; 90
export usb_GetEndpointAddress ; 93
export usb_GetEndpointTransferType ; 96
export usb_GetEndpointMaxPacketSize ; 99
export usb_SetEndpointFlags ; 102
export usb_GetEndpointFlags ; 105
export usb_GetRole ; 108
export usb_GetFrameNumber ; 111
export usb_ControlTransfer ; 114
export usb_Transfer ; 117
export usb_ScheduleControlTransfer ; 120
export usb_ScheduleTransfer ; 123
export usb_StartTimer ; 126
export usb_RepeatTimer ; 129
export usb_StartCycleTimer ; 132
export usb_RepeatCycleTimer ; 135
export usb_GetCycleCounter ; 138
export usb_GetCycleCounterHigh ; 141
Add the following to CEdev/include:
https://raw.githubusercontent.com/CE-Programming/toolchain/srldrvce/src/srldrvce/srldrvce.h
https://raw.githubusercontent.com/CE-Programming/toolchain/srldrvce/src/usbdrvce/usbdrvce.h
Download the libraries from my website: http://commandblockguy.xyz/downloads/usblibs.8xg
Alright, so I made some .txt files with the code and then changed the extension since I didn't know exactly how you wanted me to "make" the files. I've done similar conversions before so that should work as far as I know.
I installed all this to CEdev and put your usblibs.8xg onto my calculator, no errors there. However this still doesn't change the mingw32-make install error (for those who weren't here in the SAX chat, I fixed it by editing the system PATH manually and now need tools to make the files). It still searches convhex/tools for the convhex.exe file and errors out when it can't locate the directory.
If someone has used CEdev before and added the toolchain, why can't the raw libraries, programs, etc. just be manually installed? I'm willing to go through the trouble of porting the full files to my PC from a functioning system.
The steps in the previous post are to add the libraries manually to an existing CEdev release. This means you no longer have to build a custom copy of CEdev using MinGW and can already start using the libraries in your programs.
Alrighty, I've been going over the basics of C (as I specialize in Python and some C++) and messing with the examples, but I still have a question: what is the syntax of the convbin.exe for converting C scripts? I've been using it for a while and don't know if I'm naming something wrong or what. I tried to convert the hello_world script into a .8xp file, but I haven't managed to crack the syntax yet. I'm checking the example script at [ cd c:\CEdev\examples\hello_world\src ], and what my brain tells me should work is:
convbin -j bin -k 8xp -i main.c -o main.8xp
(this is just example, I tried other combinations, with and without -j and -k)
How exactly do I use the convbin command? Sorry if this seems like a dumb question, I just can't wrap my head around this.
EDIT: I found Dunlavdy's little youtube channel and lo and behold there's the instructions! I was doing it the hard of way of course, since that's the only way my brain works...
Why on earth are you doing that. Use the makefile.
convbin only converts raw binary files to TI variables - if you used it on a C file, you would be able to see the C file as plain text on the calculator (with an appropriate reader) but not run it. You have to use a C compiler to convert a C program to assembly, then a linker and assembler to turn that assembly into a binary that can run on the calculator, then convbin to turn that binary into a TI program.
That's a lot of steps, but luckily there's a tool that can do all of that for you. If you run the command "make" in the directory containing the src folder and makefile, make will automatically run all of the commands necessary to turn a C source program into a TI program.
For more information on building programs, refer to the toolchain wiki:
https://github.com/CE-Programming/toolchain/wiki/Building-your-first-program
MateoConLechuga wrote:
Why on earth are you doing that. Use the makefile.
Because I thrive on my own suffering, and I found that .exe when first doing all this so I immediately assumed it was the right way. Obviously I was wrong. I've gotten everything working, and now just need to learn to code C effectively, and find an RGB to 8-bit hex color converter for the background.
Coincidentally Mateo's convimg utility has been created to fulfill this purpose:
https://github.com/mateoconlechuga/convimg
I honestly can't believe things are going to be easy for once! Thanks tr1piea for mentioning and Mateo for making! However, I don't plan on using too many custom-sprites in my code just yet, mainly just some serial communication. I've read through the toolchain wiki's and I couldn't find a command that would read/write any serial data over the USB. What commands should I use and with what syntax? I assume the logic would be:
1. start serial at 9600 baud
2. send serial data (string or int)
3. enter a loop waiting for serial response (e.g. "Heller!")
4. close serial (does the code require the serial to close?)
5. end program
Any tips on implementing this efficiently? Thanks to all for the help!
EDIT: I do have the USB libraries installed as well.
There's currently no documentation on srldrvce in the official wiki or in the tutorials, as it still hasn't been released yet and is still under development. As jacobly mentioned in IRC, you can view the comments I've added to
the header. Additionally, there's a single example for the serial driver on the srldrvce branch:
https://github.com/CE-Programming/toolchain/blob/srldrvce/examples/srl_echo/src/main.c
Let me know if you have any more questions or comments - the library is still under development and I value any feedback you provide.
I'll be glad to help, I'm just happy I can contribute anything to this; besides my help in discovering that an entire branch disappeared from the GitHub repository
I'll get to work on this when I have time, I have to use my calculator for school too!
I've managed to get back to my calculator and get the program running, but I'm getting a missing library error for SRLDVCE. I found it in the toolchain (I believe user Jacobly put it in the SAX chat, thanks for that) and copied the files for making a loadable .8xv file, but I get an error when trying to make the script. I've put the library in the CEdev folder so it could pull everything, but it is unable to collect a "library.inc" file, which I found a copy of on the toolchain GitHub. I copied it and put it in my own CEdev and it still errors out with "...include/library.inc" for srldvce.asm with "unable to locate source file" and Error[2]. Does anyone have a pre-built copy of the library or know where I need to put this library? I've pasted it into every /include file in CEdev and into the main folder for the script.
Also, if you have links for libraries, post them here so posterity can find them, I figure one of 320+ guests will want to know where I'm getting these libraries or my future self if I have to rebuild.
Jacobly's link:
https://github.com/CE-Programming/toolchain/tree/srldrvce/src/srldrvce
I've managed to get the library.inc file working, but now I'm having the same issue but with the ez80.inc file, which is literally in the same directory as the library.inc file and in the fasmg-ez80 folder (I've also copy-pasta'd them everywhere). Could someone explain why the srldvce library won't load? I've re-downloaded the raw toolchain again and added all files to their directories in my CEdev, and I'm honestly out of ideas now. Any help appreciated!
That method again requires you to build the toolchain, which we are trying to avoid doing because of mingw.
If you only need to install the library on your calculator, you can download them from my website using the link I gave you earlier:
http://commandblockguy.xyz/downloads/usblibs.8xg
That contains Libload,GRAPHX,FONTLIBC,KEYPADC,FILEIOC, and USBDRVCE. The missing library error calls for a library called SRLDVCE, which isn't listed at
https://tiny.cc/libs either. What is the issue with MinGW, is it still the missing repository?
Whoops, that's my bad. I apparently didn't include it there since the project that I uploaded those for didn't need it.
You can download the library here:
https://cdn.discordapp.com/attachments/466808269789200387/681677014083960833/srldrvce.8xv
Ah, good, I thought I was making a noob mistake; thank you for confirming the health of what sanity I have left! I'll try messing with the syntax tonight or when I have time, I quick glance gives me an idea of how to call the functions, but I might need some help with opening and closing ports at certain baud and such. I'll keep on keepin' on for now.
I have decided to make a wise decision for once: drop this whole idea until I actually know what I'm doing!
I thought I could just fumble through this idea with little C programming knowledge, but I clearly need to learn how to use C first as it is too sophisticated to merely edit a few variables and copy-pasta code. I'll also have to work on just understanding how the serial for the calculator functions in respect to my Python scripting that collects the serial data. I just don't want to keep needing to ask noob questions and be able to learn for myself. Once I get some sort of "serial beacon" on the calculator constantly beaming serial data, then I might be able to get the madness working. I also have many projects, both scholastic and for personal use, that need to be completed before this madness. I do hope to restart this in a week or so. I did get my question answered, so I'll have to do the rest myself. So thanks to all, I'll see what insane hardware/software/"stuff" I can make after actually preparing myself well and understanding what I'm doing!
If anyone was wondering, the libraries are compiling fine and everything seems to be working, I really just need to find a way to receive the calculator's serial as the my PC doesn't seem to register as a serial device to the calc and my PC can't open a COM port. I'll get to work on something for this soon!
I will admit that I lied, I continued working on this simultaneously with other projects (although with less of an obsessed frenzy) and I recently realized I'm missing a part of CommandBlockGuy's example: the serial device communicating with the calculator. So I have 2 questions:
1. In the serial library, how is the baud of the connection established? I don't understand how the example sketch could work without initializing unless it defaults to something (such as 9600 bytes per second).
2. What serial device/terminal was used with the example and with what settings? My bare-bones Python-serial scripts have been unable to locate or send data to the calculator thus far.
I've been working on some code-frame-working for prototype Arduino projects, and I have enough little things to keep me busy for now during the plague.
Have a merry quarantine!