Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Switching Between BIOS Banks

Status
Not open for further replies.
I recently sold my personal Xbox, and just received another one for free from a friend. I plan on running four different BIOS's (4 x 256kb) embedded on the TSOP BIOS chip. Now, instead of having a mechanical switch and picking between two 512kb banks, Id like to have a momentary button that, when pressed, cycles through banks 1, 2, 3, and 4, and lights up the corresponding LED.

For those of you that dont know how to switch between them, two lines are pulled to ground, and whether you pull one, both, or none choose which segment of the BIOS is loaded. Little bit more to help:

**broken link removed**
**broken link removed**

Im not really familiar with binary or hex, so here's my "truth table" of sorts:
Switch 1 = a18
Switch 2 = a19
"On" means grounded
**broken link removed**

Now to the skilled minds here, I'm sure this is pretty simple. However, there is one kicker: it needs to run off 3.3v, as that is the standby voltage available whenever the Xbox is plugged in (the bank has to be chosen before the xbox is turned on).

If it turns out that its going to become really hard to do, or that a microcontroller is a more suitable option, Ill pay someone to write the code and draw out the schematic, as I know zero about coding (anything - C, vB, C#, Java ... Im just not a fan of coding, and other than the tiny projects I wont really need to know it).

Thanks for taking the time to look!
 
Last edited:
Trial #0.1

Warning: never follow random circuits posted by people. They could blow up and kill something.
Of course I don't own an xbox and there's no way for me to test this whatsoever, and I don't even know what the specs of the wires you provided, so... Your mileage may vary. This likely won't even work because I have no way of determining the characteristics of the xbox.
 

Attachments

  • sequencer.png
    sequencer.png
    16.3 KB · Views: 157
Last edited:
There, that's a little better...

Remember, disclaimer still exists... I don't have databooks for every part on hand so this is all from guesswork and memory and my patience... :eek:
 
Ahh, much better. And dont worry, that disclaimer's pretty much assumed with everything anyways. Ill breadboard it tomorrow with a dummy load, and let you know how it goes!
 
Oops. I think the base bias of the transistors (and 4029) are going to be quite toasty... Those 220 ohm resistors R2, R3 are the victim of copy&paste and should be considerably larger, say 1K ohm or so... :rolleyes:
 
Looked around all of today (past couple days have been pretty busy) and I cant for the life of me find any 4028/29's, so I guess Ill have to order some samples. Ill let you know when I do try it.
 
You could use an PIC or AVR microcontroller too, if you want to go that route.

CD4028 is a 1-of-10 decoder, and I'm just using it because I'm lazy to decode with gates.

CD4029 is a 4-bit counter that I'm just using 2 bits of, and letting it overflow because it doesn't matter.

I'm sure you can find some acceptable substitutes if needed. Or a microcontroller such as AVR90S2313/TINY2313. I think I tried to not use any "weird" stuff so it should be easily generalized to most compilers, or assembled by hand:

volatile u08 a=0;

SIGNAL(SIG_INTERRUPT0) {
a=a+1;
if(a>3) a=0;
}

main()
{
u08 junk;
u08 loop;
DDRB=0x3f; /* using portb[0:3] for LEDs, portb[4:5] for bank sel */
DDRD=~_BV(PIND2); GIMSK=_BV(INT0); /* setup interrupt input */
MCUCR |= _BV(ISC01) | _BV(ISC00); /* setup interrupt on rising edge */
sei(); /* enable interrupts */
while(1) {
junk=1;
for(loop=0; loop<a; loop++) { /* calculate decoded value, yes leftshift by value would be simpler but I dont think most :mu:C's have arbitrary shift operators */
junk=junk+junk; /* or *2, or leftshift 1, but all mcu's have add */
}
junk=junk |(a<<4); /* we still need encoded value, ok I cheated here, but this time it's a static value */
PORTB=junk; /* output it now! */
}
}

Then use INT0 to the pushbutton circuit, hook up any old crystal to it, and use the 4 low bits of PORTB as your LED drivers, and bits 5:4 as your transistor drivers. There, one chip microcontroller solution.

Of course I can't debug this code so I don't know if this really works :)
 
That made about as much sense to me as the concept of a God makes to a penguin. I think im'a try the CD- series chips (non-uC) first :p Thanks for the code though, if the original circuit doesnt do what it should, a microcontroller will be my next option (and probably a better one, since its only one chip).
 
It looks as though using a TINY2313 would be the easiest way. Anyone have one or two SOIC-packaged ones they would sell me? Id like SOIC only to keep the size to a minimum, as, if this works out, Im planning on showing it off, so Id prefer to keep the huge mess of wire to a minimum :p (which also means I need a 2313 with an internal osc, please :))

**broken link removed**

Would that be a decent price? Or does that seem a bit rich to anyone?

PS. I realize those are DIP-packaged 2313's

PPS Now that I think about it, are there any cheaper/smaller chips that can be used?

PPPS Hahaha, sorry for all the P's... Would it also be possible to add a line of code and a removeable jumper, so when its off, the LEDs light up one by one:

O o o o
o O o o
o o O o
o o o O

And when its shorted, the LEDs light up like this (I think its called bar mode with the LM3915 chips):

O o o o
O O o o
O O O o
O O O O
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top