Version 0.1.5 at the first page.
Note: I split the commonly used objects into a ./lib directory which is included in the Makefile. If you compile with BST, you will have to add ../lib to the search path for objects (somewhere in the compiler preferences).
Improved user interface:
The list of CMD files is loaded into external RAM and sorted alphabetically now.
The up/down keys to browse the list have an acceleration.
You can page up/down to quickly go to the other end of the list.
Many games are working fine now and to hear their sounds again is cool. I even remembered the strange key combinations to play Starfighter with.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
He died at the console of hunger and thirst.
Next day he was buried. Face down, nine edge first.
Re "In one of my previous posts there is a clock.zip file as an attachment. It has the full source for the clock80 program. It would be a good test case to see if that can compile and then generate a cmd file."
The code looks almost identical to .asm and .mac, but with one difference - jump locations/labels usually have a : after them
If it is just a matter of adding the colons after the program labels (Some assemblers seem to need them) and a few other structure changes then it shouldn't be a big deal to update the source. Even on the TRS-80 there were a few different conventions used. Some of the data definitions wanted DEFW, DEFB to define a word or byte while others could use the shorted DW and DB. As long as I know which convention to assembler wants it shouldn't be a big deal. As I mentioned before some of the source was too large to be assembled at once and I had to break it up as separate files that were included at assembly time. With a modern cross assembler it could all be brought back together.
With all the talk about the memory managers using external memory I was wondering if anyone tried to make similar code run on the Hydra with the 512K SRAM card. There are probably quite a few people with Hydra's that would like to put that card to work.
With all the talk about the memory managers using external memory I was wondering if anyone tried to make similar code run on the Hydra with the 512K SRAM card. There are probably quite a few people with Hydra's that would like to put that card to work.
That anyone would be me. I would need a description of the memory access bits on the ports, or even better yet the code fragments to read or write a byte from/to the SRAM. Then it was just a matter of adding another target to the main Spin code.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
He died at the console of hunger and thirst.
Next day he was buried. Face down, nine edge first.
Just opened up a set of new Dracblade PCB's today and have started to populate the board. By this evening I should have a good portion together and can make a list of the last few missing parts so I can track those down.
RobotWorkshop said...
Just opened up a set of new Dracblade PCB's today and have started to populate the board. By this evening I should have a good portion together and can make a list of the last few missing parts so I can track those down.
Hey, so you can run your old programs soon now. The most recent TRS80 is pretty much ok. The only programs that do not work are those calling non-existant DOS function.
I'll probably take care of running BASIC programs from the SD card when I get too frustrated with the M100 emulation.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
He died at the console of hunger and thirst.
Next day he was buried. Face down, nine edge first.
RobotWorkshop said...
According to the demo board schematic pins P12, P13, and P14 are used for the TV out.
P12 - 1.1K ohm
P13 - 560 ohm
P14 - 270 ohm
From the Dracblade schematic it looks like those are wired to P16, P17, and P18. Did you wire out the output for the TV like this?
P16 - 1.1K ohm
P17 - 560 ohm
P18 - 270 ohm
Also, what are you doing for the Audio out?
Robert,
both settings can be configured in trs80.spin. The default is to use pin 18 for the video out. It's just this one pin, because my code is based off of the 1 pin TV driver. For the audio I used pin 20, which is the first one after the TV pins (19 would be the aural FM, which no one seems to be using), and also used with the VGA output. But as I said, just define the pins you use in trs80.spin and it should work.
I can see where that is in the code now and found the notes about the original DebugTV object. If everyone is already using P18 as a video out I just wanted to keep the same convention so we can use the same standard. Looking at the Dracblade schematic it might be better to use P16 for the video and P17 for the audio. With that the VGA connector and resistors can be kept intact so it would be easy to switch between the two displays. The board would just need a jumper between pins 1 and 2 on the 6 pin block next to the TV connector. P18 may not work as well for TV out with the resistor populated for the VGA connector. Just a thought.
I can see where that is in the code now and found the notes about the original DebugTV object. If everyone is already using P18 as a video out I just wanted to keep the same convention so we can use the same standard. Looking at the Dracblade schematic it might be better to use P16 for the video and P17 for the audio. With that the VGA connector and resistors can be kept intact so it would be easy to switch between the two displays. The board would just need a jumper between pins 1 and 2 on the 6 pin block next to the TV connector. P18 may not work as well for TV out with the resistor populated for the VGA connector. Just a thought.
Robert
Well, I can change that. I simply used what I thought without thinking about the implications. I'll change my audio connection to pin 17 then and 16 for the video should work as is. You will have "strange sound" then with a colour TV driver, as I now have with a VGA driver
BTW Chopper hangs with qz80 after starting a game. It looks like there is a new (hidden) bug of the kind "forgot to mask lower 16 bits". :-(
Edit: It doesn't work if you have the "standard" resistors for pins 16, 17 and 18, which are joined for the TV/FBAS signal. The audio input then pulls the video signal low and I see a black screen. I guess I could open pin 17, but then I can not use a standard TV driver anymore... don't we have any pin that could be (ab-)used for audio? What the EEPROM might think if you toggled its SDA line - without touching the CLK - would be interesting. Alternatively we could also use the second serial port's pin 24 and send the sound to it. What do you think?
At the moment I don't have any resistors in place specifically for the TV connector. With the 1 wire TV driver it sounds like the 240ohm resistor already coming from P16 should be good to drive monochrome video.
The board I have is V5 and according to the schematic for this version it looks like pin 16 goes to a 240 ohm resistor then to the VGA connector and to pin 1 of the 6-pin area on the board near the TV connector. By just adding a jumper (a two-pin SIP and jumper plug) it can work with the TV or VGA as long as only one is connected at a time. I don't see any issues with that and it should be easy to switch between the TV or VGA.
Pin 17 also just goes to a 240 ohm resistor and onto the VGA connector. The audio could use that when the VGA is disconnected. I was just trying to avoid using P18 since that one goes to a resistor which is tied to a resistor coming from P19. At least that is the way it looks. Just trying to figure out what would be the best pins to use.
I think it would be nice to have a few more pins....
I'm working on the next board design and I have a question. Would people ever want to switch between TV and VGA on the same board?
This is a bit complex to explain...
At present there are 8 resistors for VGA. If you want TV instead of VGA you leave out 4 of those resistors and you can put in 4 different resistors for TV. But once you have soldered those resistors in they are hard to change.
I don't think you can put in 12 resistors and solder them all in and have sockets for TV or VGA because I think the TV voltage divider will load the VGA. And I think the VGA voltage dividers will load the TV.
So I think if you want both, there has to be space for 12 resistors, and there has to be a group of 4x2 jumpers for TV and another group of 4x2 jumpers for VGA. Then you add in 4 jumpers depending on which one you want to use (or solder bridges/wires if you only will ever use one or the other). I'll see if that will fit on a board...
But now we have Cluso's one pin TV signal as well. Which pin does that come from?
Dr_Acula said...
But now we have Cluso's one pin TV signal as well. Which pin does that come from?
It doesn't really matter. With my FBAS monitor it works with any of the pins usually used for VGA, or even with the parallel installment of TV resistors. It's just the audio out that requires separation, and I think that using the secondary SIO TX pin for this purpose should be the safest choice!?
You should be able to eliminate the two jumpers for P16 and P17 for the VGA connector. They won't interfere with the TV output as long as a VGA monitor is unplugged. Actually getting a bit creative it should be possible with a single 4 position DIP switch. One would break either p18 or p19 on the VGA and the other three would break three of the leads probably p17, p18, and p19 at the TV connector. Just by flipping switches (or moving jumpers) you could swap between the two.
Just popping this up. The TRS80 now also has a VGA driver. The font isn't perfect, because it is 8x16 instead of 8x15. The latter is impossible with the VGA object as it stands.
Also new: support for subdirectories on the SD card. You can put your *.CMD files somewhere other than the root directory.
Have you got some files I can put on the disk, eg some demo games?
Also, taking up the thread a few posts above re combining VGA and TV on one board.
I am wondering if you need the links at all. Consider, from the point of view of propeller pin P16. This is driven high or low by the propeller. So if it goes via two resistors to, say, propeller pin P17, propeller P16 is still either high or low. I'm not sure what the source impedence is for a propeller pin, but I suspect they can easily drive 20mA or more. If you model that as an ideal voltage source in series with an internal resistance, V=IR 3/0.02 gives a value of the internal resistance of 150 ohms. So ok, there might be some slight extra loading for the lower value resistors, eg R9 and R10 in series, or R17 and R18 in series. However, I don't think this is going to change the colors significantly.
I'm working my way through trying to get an emulator working www.discover-net.net/~dmkeil/trs80/model1.htm - it is a bit complicated and I have some of it working but quite there yet.
Bugfix for the FAT32 support, which was broken due to a wrong comparison in the mount function.
Also fixed the character code < $20 issue. The TRS80 had a bit missing in the video RAM and would thus display character codes below $20 as upper case letters. The VGA display object now accounts for this by modifying the bytes read from video RAM.
Dr_Acula said...
Attached is one idea for having both TV and VGA. Is the audio correct on that?
I haven't seen any code that makes use of the "aural subcarrier" in TV mode. Most objects are meant for a monitor, not actually a TV AFAIK. A monitor does not demodulate the RF frequency of an audio channel mixed in, but may have an extra sound output. Thus pin 19 will rarely be used.
I think I saw that used in a demo program early on. Nobody has touched it since.
IMHO, if it's not connected, or used as some other I/O, that's not going to significantly impact TV. If it is connected, as shown in the reference video circuit, the audio capability can be ignored, and the extra pin used for better color graphics. Eric Ball did this. No other driver to date does.
Finally, if it's connected with that resistor shown in the reference video circuit diagram, but not connected to the DAC, most any TV driver can be modified to send the chroma on that pin, making an S-video connection possible.
I personally have been considering a different resistor for more grey scales... no code written yet, just wanted to toss that idea out there.
That is an interesting idea potatohead. More pins = more resolution. Obviously the R/2R/4R thing cannot be extended forever on the TV pin, but it should be possible to extend it a bit further. Then again, pullmoll is only using a 1 pin TV object. Is there a reason for that - lack of buffer space in hub ram for storing a color palatte, lack of code space for color objects?
So is it safe to say that no-one uses the audio out part of the 4 TV resistors? If so, I might remove that resistor. Though it depends a bit on whether we use potatohead's idea of better resolution of color.
Could the TV out, from the commoned resistors, be shorted to ground by having one of the ground connections of the 15 pin lifted at the Prop end ie pin 6. Then when a VGA was plugged in the interactions of the composite resistors would get nulled, as most leads do not separate out the shield paths.
The fourth resister ( R17 on the diagram) on the composite set is only required is the audio subcarrier is wanted.
A pair of shorting plug would do no harm, just that they would be a nuisence, and probably lost.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Style and grace : Nil point
Looking at the schematics, it wouldn't really need R17. Thus the connection between R17 and R18 wasn't required either. Now R19 and R22 sit on the pins 17 and 16, which are the hsync and vsync of VGA and they are not connected to each other. I should try if the VGA sync signals also work with 560 and 1k1 (which I think), then all you need was a dual switch to connect R11 and R12 to and output the switches center pins to R18 and to the RCA jack.
The sync impedance for VGA is about 1K (usually) and often just an unshielded wire, so that thought about higher value resistors, would probably be ok as long as the VGA lead isn't too long and/or capacitive
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Style and grace : Nil point
Post Edited (Toby Seckshund) : 5/4/2010 9:31:31 AM GMT
Updated version 0.2.7 detects Ctrl+Alt+Delete on the PS/2 keyboard and resets the Propeller. Also lowered sound (cassette out) volume to 0.46V and 0.85V of 3.3V. This compares better to the volume of the AY-3-891x emulation.
Comments
Note: I split the commonly used objects into a ./lib directory which is included in the Makefile. If you compile with BST, you will have to add ../lib to the search path for objects (somewhere in the compiler preferences).
Improved user interface:
The list of CMD files is loaded into external RAM and sorted alphabetically now.
The up/down keys to browse the list have an acceleration.
You can page up/down to quickly go to the other end of the list.
Many games are working fine now and to hear their sounds again is cool. I even remembered the strange key combinations to play Starfighter with.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
He died at the console of hunger and thirst.
Next day he was buried. Face down, nine edge first.
Post Edited (pullmoll) : 3/31/2010 1:09:46 PM GMT
The code looks almost identical to .asm and .mac, but with one difference - jump locations/labels usually have a : after them
eg
YOURCODE LD A,5
vs
MYCODE: LD A,5
So I'm not sure which compiler to suggest.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.smarthome.viviti.com/propeller
With all the talk about the memory managers using external memory I was wondering if anyone tried to make similar code run on the Hydra with the 512K SRAM card. There are probably quite a few people with Hydra's that would like to put that card to work.
Robert
That anyone would be me. I would need a description of the memory access bits on the ports, or even better yet the code fragments to read or write a byte from/to the SRAM. Then it was just a matter of adding another target to the main Spin code.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
He died at the console of hunger and thirst.
Next day he was buried. Face down, nine edge first.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
8x8 color 80 Column NTSC Text Object
Safety Tip: Life is as good as YOU think it is!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
He died at the console of hunger and thirst.
Next day he was buried. Face down, nine edge first.
Robert
Hey, so you can run your old programs soon now. The most recent TRS80 is pretty much ok. The only programs that do not work are those calling non-existant DOS function.
I'll probably take care of running BASIC programs from the SD card when I get too frustrated with the M100 emulation.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
He died at the console of hunger and thirst.
Next day he was buried. Face down, nine edge first.
P12 - 1.1K ohm
P13 - 560 ohm
P14 - 270 ohm
From the Dracblade schematic it looks like those are wired to P16, P17, and P18. Did you wire out the output for the TV like this?
P16 - 1.1K ohm
P17 - 560 ohm
P18 - 270 ohm
Also, what are you doing for the Audio out?
Robert
Robert,
both settings can be configured in trs80.spin. The default is to use pin 18 for the video out. It's just this one pin, because my code is based off of the 1 pin TV driver. For the audio I used pin 20, which is the first one after the TV pins (19 would be the aural FM, which no one seems to be using), and also used with the VGA output. But as I said, just define the pins you use in trs80.spin and it should work.
Juergen
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
I can see where that is in the code now and found the notes about the original DebugTV object. If everyone is already using P18 as a video out I just wanted to keep the same convention so we can use the same standard. Looking at the Dracblade schematic it might be better to use P16 for the video and P17 for the audio. With that the VGA connector and resistors can be kept intact so it would be easy to switch between the two displays. The board would just need a jumper between pins 1 and 2 on the 6 pin block next to the TV connector. P18 may not work as well for TV out with the resistor populated for the VGA connector. Just a thought.
Robert
Well, I can change that. I simply used what I thought without thinking about the implications. I'll change my audio connection to pin 17 then and 16 for the video should work as is. You will have "strange sound" then with a colour TV driver, as I now have with a VGA driver
BTW Chopper hangs with qz80 after starting a game. It looks like there is a new (hidden) bug of the kind "forgot to mask lower 16 bits". :-(
Edit: It doesn't work if you have the "standard" resistors for pins 16, 17 and 18, which are joined for the TV/FBAS signal. The audio input then pulls the video signal low and I see a black screen. I guess I could open pin 17, but then I can not use a standard TV driver anymore... don't we have any pin that could be (ab-)used for audio? What the EEPROM might think if you toggled its SDA line - without touching the CLK - would be interesting. Alternatively we could also use the second serial port's pin 24 and send the sound to it. What do you think?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
Post Edited (pullmoll) : 4/12/2010 7:00:09 PM GMT
The board I have is V5 and according to the schematic for this version it looks like pin 16 goes to a 240 ohm resistor then to the VGA connector and to pin 1 of the 6-pin area on the board near the TV connector. By just adding a jumper (a two-pin SIP and jumper plug) it can work with the TV or VGA as long as only one is connected at a time. I don't see any issues with that and it should be easy to switch between the TV or VGA.
Pin 17 also just goes to a 240 ohm resistor and onto the VGA connector. The audio could use that when the VGA is disconnected. I was just trying to avoid using P18 since that one goes to a resistor which is tied to a resistor coming from P19. At least that is the way it looks. Just trying to figure out what would be the best pins to use.
I think it would be nice to have a few more pins....
Robert
This is a bit complex to explain...
At present there are 8 resistors for VGA. If you want TV instead of VGA you leave out 4 of those resistors and you can put in 4 different resistors for TV. But once you have soldered those resistors in they are hard to change.
I don't think you can put in 12 resistors and solder them all in and have sockets for TV or VGA because I think the TV voltage divider will load the VGA. And I think the VGA voltage dividers will load the TV.
So I think if you want both, there has to be space for 12 resistors, and there has to be a group of 4x2 jumpers for TV and another group of 4x2 jumpers for VGA. Then you add in 4 jumpers depending on which one you want to use (or solder bridges/wires if you only will ever use one or the other). I'll see if that will fit on a board...
But now we have Cluso's one pin TV signal as well. Which pin does that come from?
For reference, schematic here www.parallax.com/dl/docs/prod/prop/PropDemoDschem.pdf and I have shifted the TV pins up by 4 so they overlap and share with the VGA
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.smarthome.viviti.com/propeller
Post Edited (Dr_Acula) : 4/13/2010 1:33:31 AM GMT
It doesn't really matter. With my FBAS monitor it works with any of the pins usually used for VGA, or even with the parallel installment of TV resistors. It's just the audio out that requires separation, and I think that using the secondary SIO TX pin for this purpose should be the safest choice!?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.smarthome.viviti.com/propeller
Robert
Also new: support for subdirectories on the SD card. You can put your *.CMD files somewhere other than the root directory.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
Have you got some files I can put on the disk, eg some demo games?
Also, taking up the thread a few posts above re combining VGA and TV on one board.
I am wondering if you need the links at all. Consider, from the point of view of propeller pin P16. This is driven high or low by the propeller. So if it goes via two resistors to, say, propeller pin P17, propeller P16 is still either high or low. I'm not sure what the source impedence is for a propeller pin, but I suspect they can easily drive 20mA or more. If you model that as an ideal voltage source in series with an internal resistance, V=IR 3/0.02 gives a value of the internal resistance of 150 ohms. So ok, there might be some slight extra loading for the lower value resistors, eg R9 and R10 in series, or R17 and R18 in series. However, I don't think this is going to change the colors significantly.
I'm working my way through trying to get an emulator working www.discover-net.net/~dmkeil/trs80/model1.htm - it is a bit complicated and I have some of it working but quite there yet.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.smarthome.viviti.com/propeller
Post Edited (Dr_Acula) : 5/4/2010 12:57:44 AM GMT
Also fixed the character code < $20 issue. The TRS80 had a bit missing in the video RAM and would thus display character codes below $20 as upper case letters. The VGA display object now accounts for this by modifying the bytes read from video RAM.
Edit: attached are some CMD files to try.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
Post Edited (pullmoll) : 5/4/2010 4:56:21 AM GMT
I haven't seen any code that makes use of the "aural subcarrier" in TV mode. Most objects are meant for a monitor, not actually a TV AFAIK. A monitor does not demodulate the RF frequency of an audio channel mixed in, but may have an extra sound output. Thus pin 19 will rarely be used.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
IMHO, if it's not connected, or used as some other I/O, that's not going to significantly impact TV. If it is connected, as shown in the reference video circuit, the audio capability can be ignored, and the extra pin used for better color graphics. Eric Ball did this. No other driver to date does.
Finally, if it's connected with that resistor shown in the reference video circuit diagram, but not connected to the DAC, most any TV driver can be modified to send the chroma on that pin, making an S-video connection possible.
I personally have been considering a different resistor for more grey scales... no code written yet, just wanted to toss that idea out there.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
8x8 color 80 Column NTSC Text Object
Safety Tip: Life is as good as YOU think it is!
So is it safe to say that no-one uses the audio out part of the 4 TV resistors? If so, I might remove that resistor. Though it depends a bit on whether we use potatohead's idea of better resolution of color.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.smarthome.viviti.com/propeller
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
The fourth resister ( R17 on the diagram) on the composite set is only required is the audio subcarrier is wanted.
A pair of shorting plug would do no harm, just that they would be a nuisence, and probably lost.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Style and grace : Nil point
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects
Post Edited (pullmoll) : 5/4/2010 9:18:40 AM GMT
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Style and grace : Nil point
Post Edited (Toby Seckshund) : 5/4/2010 9:31:31 AM GMT
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects