-
Content Count
185 -
Joined
-
Last visited
-
Days Won
1
Posts posted by gregallenwarner
-
-
Rich,
Forgive me if my question doesn't make a lot of sense, but how does RXB keep the program memory safe when remapping banks with CALL AMSBANK? In other words, if I've got an RXB program loaded into memory, if I want to map new page into a memory bank, how does it avoid the situation where the current page of memory where the current line of code is being executed gets paged out for a different one, making the next line of code for execution unavailable? Or is this an impossible scenario?
For example, if I've got program code loaded at >2000, and the instruction at >2000 instructs the SAMS to swap out bank >2 with a new page, all of a sudden, the memory at >2000 changes, so when the program counter increments to the next instruction at >2002, the memory appearing at that location is now different from a new bank being paged in, and my program is corrupted. Does RXB have a way to detect this or prevent it?
I'm just trying to develop good strategies for using the SAMS so I avoid any pitfalls like this as I'm experimenting with it.
-
Thanks, Rich.
To be honest, rather than knowing how the RXB user makes use of the SAMS, I'm much more interested in how RXB itself makes use of it. Is there a memory manager present that keeps track of pages under the hood? What kind of memory structure do you use to store this data?
-
I've always wondered this myself. I have a copy of Parsec on a floppy that loads into 32K memory, so I just assumed the game was originally written in Assembly, not GPL. I didn't even think there was a way of emulating or running GPL code from main memory. I always thought it REQUIRED a GROM-port mapped memory space. I'd be interested in more of the technical details on how this was pulled off.
-
I was wondering if anybody could help me with some Assembly techniques for using the SAMS extended memory. Assembly is really the only language I'm interested in writing in at the moment.
I'm specifically wondering about broader techniques here, not the basic how to control the card stuff. That much I'm familiar with. I know how to page in and out the various banks of memory.
What I'm more interested in is any programming techniques that people have come up with for making efficient use of it. For example:
1. How do you use the TI's address space? Do you select an area of the TI's memory space to designate a code region, and another area a data region?
2. Where do you place the code for switching banks? What's the strategy behind switching banks in the middle of a running program?
3. Do you have executable code that resides in multiple banks? How do you switch between them? How do you make a call to a subroutine that exists in another bank?
4. How does this all impact the linking loader? How do you load a program into multiple banks? Do you have to write your own loader? Also, is there any difference in loading code based on whether it's an EA3 or EA5 program?
Sorry for the wall of questions. I've never used the SAMS before, so it's proper usage is a bit of a mystery to me.
-
2
-
-
-
Here's where I buy my diffused blue LED's:
https://www.sparkfun.com/products/11372Or, get one in every color!
-
1
-
-
The ROM 0 & GROM 0 (zero) has the DSR search so works like this:
Look in TIINTERN book page 99 at >0010 this is the branch in GROM for DSRLNK
You see the TI used the same routine to find a device and considers any name a device, so CALL EA or OLD EA in RXB is just as valid as SAVE DSK1......
A byte value of >10 tells it to search for names in GROM or VDP and ROMs this is why Assembly normally can not find anything in GROM or VDP as it never looks for things like CS1 or CS2.
On the otherhand the GPL DSRLNK always looks if you use >10 using the GSRLNK that follows the GPL DSRLNK in GROM 0
So to answer your question this would require a entire rewrite of GROM 0 and ROM 0 (zero) to use that type of search.
Another can of worms is that XB does not use the same name search that Basic uses as the two have different set ups for how the name list works the order is reversed on purpose so the OS does not confuse
the list from BASIC with XB or visa versa. This was a well thought out safety measure to create less cartridge conflicts down the line.
TI never intended for someone like me to put so many device names into the list that it bogged down the OS to a crawl.
I gotcha. I didn't know how TI Basic's and XB's searches were constructed.
As a side note, approximately how much GPL is there in XB and in RXB? Or do they even rely on GPL at all?
-
My suggestions is don't muck about with the video RAM chips. Just slap in an F18A. Much easier, and no soldering involved, so fewer chances for things to go wrong. It has its own RAM, so it doesn't use the faulty RAM on the board. You'll be killing two birds with one stone, as you also get a VGA upgrade!
-
1
-
-
OSHPark is what I use now. That would be a fairly expensive solution and not very economical when it comes to doing production runs, simply because the cost is essentially $1.67 per square inch, and lots of board houses can beat this price point even at reasonably small runs.
(EDIT: I should also add, OSHPark only does 3 qty. at minimum, so it'd be tough for each person to order their own board, cuz then they'd end up with 2 extra. Unless they want to take the time to find 2 buddies to go in on it with them.)
acadiel, can you either PM me or post some help on how to convert ExpressPCB files into standard Gerbers? I'm using Eagle right now, and stuck with an annoying 3 inch by 4 inch board size restriction, and last time I messed with ExpressPCB (which was a WHILE ago) I seem to recall having some trouble converting the files into standard Gerbers. Am I totally an idiot and missing something here? Or is there a trick you use?
-
Those look real slick!
Can I ask, what PCB fab house you used? I'm getting into designing some of my own PCB's.
-
I was just thinking, if Rich wanted to speed up RXB even more and REALLY kick XB and TIBasic's a**, a rewrite of the command search routine could be worth a look. Just my humble opinion.
-
I don't know anything about the internal workings of XB or RXB, but when you mention the calls which have to traverse a list, and when the list gets longer the search takes longer, I can only wonder, is it possible to use a hash table instead of a list structure for storing the routines to be called? That way, no matter how long the list gets, the lookup time will be of complexity O(1) rather than O(n) of a list, assuming sequential search.
Or, if the command list was sorted alphabetically, then at the very least a binary search could be implemented for O(log n) lookup time, greatly improving search time.
Again, I don't know much about how XB or RXB are constructed. My only familiarity is with Assembly.
-
I guess I'm late to the party, but I also have two F18A mods. As it's already been stated, the hardest part of the whole operation is physically cutting your case to fit the connector. If you can operate either a Dremel or a hacksaw, you can install an F18A. Matthew's done a superb job at making the instructions super easy to follow, and the installation process as painless as possible. I absolutely love it.
I'm considering going back and adding a 1/8" audio jack, but that's entirely optional, and not related to the F18A mod iself. It simply so I don't have to rely on having that old DIN connector, so I can hook it up anywhere using standard cables.
-
Really all we'd need to do is rewrite HDX for linux..and stick a pi on there
Greg
I've been wanting to write an HDX server for the AVR platform for a while now, to interface with an SD card, but I don't know that there's enough of the HDX standard published to be able to reverse engineer it to write the server. Does anybody know if Fred is open to allowing further development of the HDX server for other platforms besides Windows?
-
The only reason I would like to have a printer hooked up to my TI is for one very specifc, obscure purpose:
What I'd like to find is something akin to a thermal receipt printer, but with sticky-backed paper, so I can print floppy diskette labels on the fly from disk listings. That'd make cataloging much faster.
-
Thanks for those routines, Willsy. That'll help me out in my learning quest a lot. And I can read Forth perfectly well, after years of programming HP calculators in RPL (which is essentially just Forth), so no worries there!
-
Just a random thought, but is Richard Bell or any of the other current IP holders out there interested in anything like a Kickstarter campaign to secure some funding for producing new hardware? We wouldn't have to raise much, and we also have the benefit of this forum and the Yahoo Groups to gather intel beforehand on who'd be interested in contributing. So we wouldn't be shooting in the dark, so to speak. If enough people chime in on this forum and the Y! groups, we'd have a reasonable certainty of whether the Kickstarter campaign would be successful or not before even launching it.
I know I'd put some money down on some new TI hardware!
-
This is way more info than I was expecting to receive, but that's good because I'm learning a lot! Thanks again, for all the input. I'm one who tends to want to know all the nitty-gritty under the hood stuff of how or why a process works the way it does. Understanding the logic that's implemented in the TMS's ALU is definitely something that I'd be interested in. I'm going to take the advice here and give the datasheet a thorough inspection.
Thanks again everybody.
-
...it is unlawful to circumvent an "effective" copy protection.
Wouldn't the very act of successfully circumventing it by definition make it a "non-effective" copy protection, and thereby protect your actions as they are not governed by this law?

But seriously, though, it is ridiculous the state of our copyright law here. Sorry, too, if I am chasing this rabbit trail, but the law has absolutely zero effect on piracy, and serves only to turn honest citizens into criminals when they simply want to watch their rightfully owned content on their viewing hardware of choice.
Now, back on topic, as for wanting to clone the third party add-ons to the TI, I would still advise asking around first before you do it, simply because we are a small, close knit community here, and if somebody legitimately owns the copyright on a particular piece, and if they are still actively supporting it, then I see it as an act of respect within our community to police ourselves and not trod on the rights of others. This position of mine is separate from my opinion of US copyright law, however. Respect for active, contributing members of the TI community is something I have. Respect for corporations abusing the copyright law is not.
However, if it's clear that the hardware you're wanting to clone is abandonware, I say knock yourself out.
-
1
-
-
I absolutely love the HDX. It's the only add-on that I built myself that worked first time without debugging! (Thanks to the extremely well designed PCB and simple-as-dirt instructions. Super easy to follow.) I highly recommend it.
-
2
-
-
Aha! I didn't think to check those sections of the manual! Thanks, that helps out a bunch!
-
I gotcha. I'll have to write a 32-bit 2's complement inverter routine then. Thanks for the tips.
Also, with the TMS built-in MUL routine, only the result is 32-bit. I'm trying to write a routine that multiplies two 32-bit operands. As I understand it, that involves doing successive multiplications on each 16-bit word. I don't have the algorithm nailed down yet, but I believe I understand it in principle.
-
Ok, that's good for me to know, because I was planning on writing a routine that could multiply 2 signed 32-bit numbers together.
Since the E/A manual states that the MUL instruction is for unsigned integers only, and since X * -Y = -(X * Y), can I just take the 2's complement of the negative number to convert it into a positive, perform the multiplication, then take the 2's complement again of the result?
-
Thanks Greg. I was not specifically thinking about Texas Instruments though. Actually I was thinking more about the third-party hardware that came out for the TI later on in the game. For example, that old Triple Tech Card would be a neat item to copy. Another item might be the Triple Tech FDC since it was DSDD... a perfect project just crying out for the 80 track upgrade. There are others too, but I don't want to get off track.
I seem to recall there are a couple of 3rd party TI add-ons who's copyrights are currently owned by members of the community. If in doubt, just ask on the forum and I'm sure that somebody can put you in touch with the copyright holder if it's an actively maintained copyright. When in doubt, ask first. It's best not to trample on anybody's intellectual property.

SAMS usage in Assembly
in TI-99/4A Development
Posted
Ok, I gotcha. RXB uses the low memory address space as dedicated switching banks, and the program lives in high memory, protecting it from being accidentally switched out. Where does the RXB interpreter live? Does it require itself being run from cartridge space, or can RXB itself be loaded into memory? (I assume your portion of code that actually controls the SAMS hardware is part of the RXB interpreter, and separate from user program space.)
I'm simply trying to learn how it's been done by others in the past so I can use those techniques in my ASM programming. Thanks for your explanation of how RXB does it, that's very helpful to someone like me who doesn't know a whole lot about TI-99 programming.