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 Smile 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!
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement