I asked you how to download a program to .DSK file because in the late 80's I was programming in Turbo Pascal (in MSDOS) and I recently found a Turbo Pascal 3.0 for CP/M-80.
I really discover a new world : Propeller, spin, pasm, Keydos, cp/m, xmodem, SIMH, your IDE, vb.net, C language, Catalina. I think I need 2 or 3 more lifes.
Along with my dreamings of getting a CPLD into a DracBlade, I could not find the Xilinx ISE 9.2 disk I had. So I downloaded the 12.3 version, 8GB disk space, 137K files in 11.7K folders.
After all that I am only playing with the bottom level of their chips (xc9536xl).
There have been various mentions of CPLDs etc over the recent past. It is not that much of a step forwards, I only intend, at first, to encapsulate the address latches ('374s) and the decoder ('138) into one package. I do not expect it to improve much but is just another part of my (simplistic) education. I last tried to learn something about them a year or two ago, but then stopped and of course I have forgotten most of it already. I will be making a through hole, PC44 breakout board for this attempt so tha the "Spreadout DracBlade" can be used as the guinea pig.
The Hydra board uses a Lattice make of a CPLD as a part of the add on memory.
CPLD sounds interesting. If anything, it is an excuse to try something new and to learn in the process. Which is half the fun of what we are doing anyway!
How many pins does a CPLD have, and how do you program them?
The little ones that I have are in PLCC44 and have 36 I/O pins available, enough for an early version of the DracBlade. I have one XC9572 in PLCC84 (5V only) which was going to be the VDU logic on the Nascom rebuild. The Prop saved the need for all that.
Programming is by JTAG, there is a simple parallel port cct freely available that uses a couple of '125 buffers. The software is free, but enormous, and you might get a rep calling you to discuss how many thousand Virtex4 chips you are likely to use!! When I told him what I was up to he wouldn't leave me any develepment boards, git.
I have not tried any of the Altera ones, not that I have tried many CPLDs at all. I got hold of these Xilinx ones for free (except for the 9572) and as the sofware seemed free(ish) I had a go.
PLCC is a bit clunky but at least a 100 thou through hole PCB base is possible and so it can be removed for reprog elsewhere etc. I have had a set of removal claws for decades now, I thought I would never get to use them again but a fair bit of stuff at work still uses the PLCC and bases.
To the youngsters at work, knowing about the old stuff is tantamount to Voodoo!
In a generic sense, you take 12 propeller pins and convert to 19 address pins, a read pin and a write pin. (The 8 data lines go straight through). So that is 21+12=33 pins.
How would the 5V work? Would you run the ram chip at 5V and put eight 1k resistors in the data lines?
What discourage me from using CPLD's and other Xilink stuff is the difficulty to manipulate, implant or remove these tiny chips. They are almost incompatible with ordinary boards.
@Dr_Acula
I thought I had an easy method to add files to a DSK disk image. "MyZ80" is a free dos emulator of Z80 and CP/M, running from a DOS session in XP. It has 3 virtual disk files (A.DSK to C.DSK). On A.DSK you can find IMPORT.COM and EXPORT.COM. These programs are able to transfer any file between an XP directory and CP/M in both directions. It can list an XP directory with the command DOSDIR.COM
MyZ80 is also able to open one of our DSK image and to show a DIR. Unfortunately, an EXPORT, IMPORT or PIP of our files fails. Are there differences in the file organization ? I dont know.
Yes, I don't like tiny chips much either. The dracblade is deliberately built with big chips (it could be made much smaller, cluso even managed to make a board that fit in a matchbox).
Also, do you have xmodem working? You can do file transfers from within any terminal program, but I automated it in the N8VEM IDE program (which needs vb.net). Eg in the automated version, you can highlight a whole directory of files and set it going doing a download for all of them.
There is a third way to get files to and from cp/m but it does not exist yet. It would need the source for W.COM and R.COM from the SIMH. It may be worth writing this as it would open up CP/M programs (eg text editors) for use on propeller only boards. Eg, your 'operating system' could be KyeDOS, you could run CP/M from Kyedos, write a text file, save it in CP/M and then move it from inside CP/M to the SD card as a file.
I suspect MyZ80 does not understand the disk geometry of the 8MB hard disk images we are using for CP/M on the Prop. That is to say we are using number of sectors per track, number of tracks, interleaving, etc that it does not know.
Perhaps there is a way to configure MyZ80 drives with our geometry parameters.
It's just that in the CP/M world there were a huge number of different disk layouts especially for hard drives.
PLCCs can be socketed. With through hole sockets the pad layout is 100x100 thou, so no more tricky than a header, and with their bulk they are not small chips (definitive proof - I can see the leadouts without glasses).
As I said it's just me wanting to try something else.
@Leon
I built up an expanded version of what you show, about a year ago. I put on more LEDs and a few switches and got a 5 stage up/down counter running ok.
I also use the enormous WebISE for CPLD programming , and not even a XL version, just plain old XC9536 . At least I'm not using schematics any more and learned Verilog.
The VCCIO (no XL versions) can be powered by either a 5V or a 3.3V source for compatibility. When powered by 3.3V it is 5V tolerant.
If you want to go a step further I'd recommend you go the Spartan3AN route (XC3S50AN tqfp144). It has internal flash and costs some 8 Euro. The Altera devices only need 1 supply but they are way more expensive !.
There are so many things that I wish I knew better, like Verilog orVDHL.
I tried to change the DracBlade in so many ways in an attempt to get a better understanding. I always end up getting back to Dr_A's latches and static RAM and feeling as if I failed.
Usual motto "knows a bit about a lot of things, but not enough of each"
My useage of the through hole bases does leave it on thread.
I found out that if I write down a schematic, a description of what I want and A time vs logic-level diagram I can build a picture of how the thing has to work. Of course testing something out gets in the way of proper planning... but well at some point you have to try to build your idea and see it in real life. I write this while I work on pPropQL again, this time on the CPLD powered version. A very nice through-hole propeller board
do you have xmodem working? You can do file transfers from within any terminal program, but I automated it in the N8VEM IDE program (which needs vb.net)
Do you have a place where to learn about xmodem and file transfer between a terminal and CP/M on the SD card ?
Do you have a terminal program? eg Teraterm. If not, I've attached a copy.
For CP/M, there is a compile switch in cpm.spin
' Define this to have user 0 on PS/2 keyboard and VGA (or TV)
' If undefined, user 0 is on SIO port #0 and user 1 on PS/2 and VGA/TV
' User0 on the serial port is easier for downloading to CP/M via xmodem
' User0 on the VGA is for a standalone computer
#define USER0_PS2_VGA
If you change this, then the program talks to the serial port rather than the vga display. (If you boot into Kyedos, you could have two versions of CP/M and run the one you want).
If you set up Teraterm for a baud rate of 38400 then it should display CP/M. (If you are booting into Kyedos, Kyedos will also appear in the terminal. Kyedos accepts input from the serial port or the local keyboard, and prints to the vga display, the 20x4 LCD display and to the serial port).
If you are in CP/M, use XMODEMF R MYFILE.TXT
You now have about 30 seconds to tell teraterm to send the file. Don't worry if it times out the first time - you get quicker!
Then in teraterm, File/Transfer/Xmodem/Send
As an aside, Peter Schorn has given me the links to the source for w.com and r.com. So I'll take a look at them shortly.
Addit: for those interested in the ability to move files from within CP/M to the sd card, attached is the source for READ. It is writting in Peter's own language called SPL which he says he wrote 25 years ago, and which strangely seems to have some things in common with Spin. I think they both might share Pascal roots.
The bit that is eluding me in this code is where it opens the file on the PC directory (which for us would be on the sd card)
As you know, there is always something failing at the first time.
I'll try to describe exactly what I've done, in the hope that you see where I'm wrong.
I made a copy of cpm.spin, renamed it as cpmcom.spin and loaded it into BST (see first picture, first arrow)
I commented the line "#define USER0_PS2_VGA" (second arrow). I then compiled the file and saved it as cpmcom.bin on the disk.
I copied cpmcom.bin on the SD Card and I started KyeDos (see second picture).
I downloaded Teraterm, unzipped it, started Teraterm.exe
I adapted the Serial Port Setup to COM3 and 38400 BAUD (see third picture).
Now, when I type something in the terminal, nothing appears on the Prop screen and when I type something in Kyedos, it doesn't appear in the terminal screen.
Moreover, if I type "Spin cpmcom.bin" in KyeDos, I get a black screen with a green blinking cursor in the left upper corner. Then if I type "DIR" or another command on the Prop keyboard or on the PC keyboard, I get no result. I have to reset the Prop to come back to KyeDos.
According to what you say, I think I should see the KyeDos screen in the Terminal screen. If I don't see it, it suggests that the COM is not working. However, I use the same COM and the same cable to program the EEPROM (with P30 and P31).
Kyedos should always work. I put kyedos on the eeprom.
On the SD card I have two versions of CP/M eg CPM1.BIN and CPM2.BIN, and one is compiled with that line commented and one is compiled with it not commented.
Sometimes you get a bad download, so I copy them to the SD card by removing the card.
With the com port, it needs to be the same as the one the proptool is using. Is that COM1 or COM3? So it is important to shut down the Proptool before opening Teraterm. You can't have both open at the same time.
Of course, what you will discover is that when you want it on the local VGA display, you want to do a download, and when you are running the serial port version, you can't see anything on the display. The answer to this has been MP/M - with one user on the serial port and one on the local display, and 4 sitting in the background running background programs. The problem - MP/M is not stable on the propeller and crashes from time to time. I have not solved this problem. I have a new board I am soldering up that has a real Z80 and maybe that will fix the problem.
Meanwhile, I've been programming in C in CP/M and then looking at moving that code to Catalina, which can run very nicely on the dracblade board.
To start with, I wanted to test the serial communication.
I loaded the EEPROM with:
┌─────────────────────────┐
│ Parallax Serial Terminal Demo v1.0
│ Author: Jeff Martin
│ Copyright (c) 2009 Parallax Inc.
│ See end of file for terms of use.
└─────────────────────────┘
On the PC, I started the Parallax Serial Terminal with 115200 as a Baud Rate and COM3 as Serial Port (I use COM3 on the rear of the PC because COM1 and COM2 are on the mother board). Then I reset the Prop and a few seconds later I saw the message "KBMTest Keyboard present" on the terminal.
I renewed the test with Br@y's Terminal: I got the same success.
On the contrary, the test failed with Teraterm. Nothing appeared on the terminal screen.
In the download files of Teraterm, there is a README.TXT that says:
4. Installation
1) If you have installed an old version of Tera Term, uninstall it.
2) Copy all the distribution files to an empty floppy disk or temporary directory (for example C:\TEMP).
3) Run SETUP.EXE and follow the instruction given by it.
4) ..
However, I dont find any "SETUP.EXE" within the files. See the picture of the Teraterm directory.
Thus I guess Teraterm is not properly installed. Perhaps it is the reason why it isn't functioning.
So I searched Internet and downloaded the 4.67 version from SourceForge.jp
There was only 1 file called "teraterm-4.67.exe" which installed Teraterm on the PC.
After configuring COM3 and Baud Rate, I reset KyeDos ==> Nothing was written on the Teraterm screen.
I tried again the "kbmtest"
with Br@y's Terminal ==> OK
with the new Teraterm ==> no result
It becomes more and more difficult to imagine what's happening
Yet another test with KBMtest and "AbsoluteTelnet", a terminal able to send and receive files with xmodem protocol. ==> no communication between them.
Although Parallax Terminal and Br@y's Terminal receive messages from KBMtest, they don't receive anything from KyeDos. I don't know what to think about that.
Hyperterminal also works - some versions of windows have this in the Programs/Accessories folder.
If none of that works, we are back to basics. Add a led to the Tx and Rx lines on the propeller. (They are active low signals, so 3V => 220ohm resistor => anode => cathode => propeller pin.) Some of my later boards have these leds and there have been a few times where it has been very useful to see the leds flashing to confirm serial data is working.
Add a led to the Tx and Rx lines on the propeller.
When drawing the schematic I thought it would be a good idea to have LEDs on Tx and Rx lines (see picture 1). So they are already on the board (see picture 2 yellow arrow).
I downloaded and installed ShamCom and extraputty. So I have 6 terminals to play with:
Parallax Serial Terminal
Br@y's Terminal
Tera Term
Absolute Telnet
ShamCom
ExtraPuTTY
Now the tests begin.
Looking at the LEDs, I saw that the Tx LED didn't blink when starting or resetting KyeDos.
I then tried to replace KyeDos by the original soft of Kye, I mean "SD2.0_FATDemo". With this soft, I can see the flash of the Tx LED when resetting. So the first problem seems to come from my version of KyeDos which doesn't send anything to the terminal. Perhaps I unconsciously deactivated the serial com while working on the keyboard
But it is not the only problem.
"SD2.0_FATDemo" with Parallax Serial Terminal
The prompt appears when resetting.
The list of commands appears when typing "help" in the terminal.
"SD2.0_FATDemo" with Br@y's Terminal
The prompt appears when resetting.
The list of commands appears when typing "help" in the terminal.
"SD2.0_FATDemo" with Tera Term
The Tx LED blinks when resetting but no prompt is visible.
The Rx LED blinks at each letter I type in the terminal.
After typing "HELP", the Tx LED blinks while sending the list of commands but nothing appears on the terminal screen. So I am pretty sure Tera Term sends the right "HELP" and SD2.0 sends back the right answer but Tera Term doen't show what it receives. Why ? This is the second problem.
"SD2.0_FATDemo" with Absolute Telnet
Exactly the same results as with Tera Term
"SD2.0_FATDemo" with ShamCom
The Tx LED is blinking when resetting but no prompt is visible Any typed character makes a sound like an error and the Rx LED doesn't blink. This is a third problem (only for ShamCom).
There is no answer of the Tx LED when typing "Help"
"SD2.0_FATDemo" with ExtraPuTTY
Exactly the same results as with Tera Term
Trying to solve or at least to enlighten the first problem, I unzipped your original KyeDos zip file in a new directory and downloaded the soft to the EEPROM. ==> Same result. I mean that this version of KyeDos doen't speak to the serial com.
The third picture shows the files in the zip. Do you see a difference with the version you use ?
I took a look at the schematic. This is different to my schematic - I use a max232. A max232 makes its own negative volts so does not depend on volts coming down the D9 on other pins.
I can see a potential problem - on data going out of your board on pin 2 of the D9, I think that is pulled negative (maybe minus 12V) by the signal on pin 4?
So if a terminal program set pin 4 to high, would this stop data going out of pin 2? Pin 2 would never go less than 3V?
I am wondering if this might explain why some terminals work and some do not.
Also, you could write an extremely simple spin program that just sends "hello" out the serial port when you restart. That might help debugging.
I can see a potential problem - on data going out of your board on pin 2 of the D9, I think that is pulled negative (maybe minus 12V) by the signal on pin 4?
So if a terminal program set pin 4 to high, would this stop data going out of pin 2? Pin 2 would never go less than 3V?
I think the problem you pointed out is not only potential but real. I measured the volts on pin4 of DB9 for the 6 terminals. Pin4 was at +10V for Teraterm, ShamCom and ExtraPuTTY. In this condition, Pin2 will never transmit the data.
For Parallax Serial Terminal and Br@y's Terminal, Pin4 is at -10V ==> they receive messages from the Prop.
Pin4 is also at -10V with Absolute Telnet. It is still unclear why this terminal does not receive the signal from the Prop.
The schematic I use comes from the Parallax official download page: http://www.parallax.com/Portals/0/Downloads/docs/prod/prop/SerialtoPropeller.pdf
However it is proposed as "Serial to Propeller: The Propeller can be programmed via a standard RS-232 serial port with this circuit". It works fine as a programmer but is not suitable for ordinary serial com with a lot of terminals.
I will have to think about a modification of the schematic. Of course a MAX232 or MAX3232 is the simplest way but it would be difficult to make the change without etching a new board. I found an interesting document (attached) explaining how to connect TTL to RS232. It should be possible to adapt it.
So, probably half the problem is on the way to be solved.
It is however still not clear why KyeDos doesn't send anything to the terminal although the original SD Fat Demo of Kye does.
I have used a mixture of these interface cct on various boards. Mostly I have the three transistor type, this works ok when the inteface it to a PC etc which can supply the negative output. If two of the transistor interfaces ended up talking to each other then there would be a problem. That is when I go to the MAX3232 interfaces.
Different software must be able to change the output voltage for when different hardwares are plugged in, such as serial mice (mouses?) or stuff like my PonyProg interface.
Comments
I really discover a new world : Propeller, spin, pasm, Keydos, cp/m, xmodem, SIMH, your IDE, vb.net, C language, Catalina. I think I need 2 or 3 more lifes.
I made tiny modifications to KyeDos and cpm so that one can choose which keyboard he wants to use.
In the KyeDos directory
- In _SD2.0_FATDemo.spin one can uncomment a #define line with his keyboard
- The file Pocketerm_Keyboard.spin is renamed Pocketerm_Keyboard_US.spin
- A new file Pocketerm_Keyboard_BE.spin is added
In the cpm directory- In cpm.spin one can uncomment a #define line with his keyboard
- The file Keyboard.spin is renamed Keyboard_US.spin
- A new file Keyboard_BE.spin is added
After modifications- _SD2.0_FATDemo.spin is to be compiled with BST and downloaded to the EEPROM.
- cpm.spin is to be compiled with BST to a binary file on the hard disk and then this one copied on the SD Card.
I am probably the only one needing these modifications but in any case I put them in attached filesAfter all that I am only playing with the bottom level of their chips (xc9536xl).
Such fun.
It should get rid of a few latches etc
Is there a thread where you explain your project ?
The Hydra board uses a Lattice make of a CPLD as a part of the add on memory.
How many pins does a CPLD have, and how do you program them?
Programming is by JTAG, there is a simple parallel port cct freely available that uses a couple of '125 buffers. The software is free, but enormous, and you might get a rep calling you to discuss how many thousand Virtex4 chips you are likely to use!! When I told him what I was up to he wouldn't leave me any develepment boards, git.
http://www.leonheller.com/XC9536/XC9536.pdf
I can supply the artwork file.
I much prefer the Altera MAX II devices, but they are only available in QFP. They are actually small FPGAs.
PLCC is a bit clunky but at least a 100 thou through hole PCB base is possible and so it can be removed for reprog elsewhere etc. I have had a set of removal claws for decades now, I thought I would never get to use them again but a fair bit of stuff at work still uses the PLCC and bases.
To the youngsters at work, knowing about the old stuff is tantamount to Voodoo!
In a generic sense, you take 12 propeller pins and convert to 19 address pins, a read pin and a write pin. (The 8 data lines go straight through). So that is 21+12=33 pins.
How would the 5V work? Would you run the ram chip at 5V and put eight 1k resistors in the data lines?
@Dr_Acula
I thought I had an easy method to add files to a DSK disk image. "MyZ80" is a free dos emulator of Z80 and CP/M, running from a DOS session in XP. It has 3 virtual disk files (A.DSK to C.DSK). On A.DSK you can find IMPORT.COM and EXPORT.COM. These programs are able to transfer any file between an XP directory and CP/M in both directions. It can list an XP directory with the command DOSDIR.COM
MyZ80 is also able to open one of our DSK image and to show a DIR. Unfortunately, an EXPORT, IMPORT or PIP of our files fails. Are there differences in the file organization ? I dont know.
I have not used MyZ80 - maybe it does use a different file format. Only the SIMH. http://www.schorn.ch/cpm/intro.php
Also, do you have xmodem working? You can do file transfers from within any terminal program, but I automated it in the N8VEM IDE program (which needs vb.net). Eg in the automated version, you can highlight a whole directory of files and set it going doing a download for all of them.
There is a third way to get files to and from cp/m but it does not exist yet. It would need the source for W.COM and R.COM from the SIMH. It may be worth writing this as it would open up CP/M programs (eg text editors) for use on propeller only boards. Eg, your 'operating system' could be KyeDOS, you could run CP/M from Kyedos, write a text file, save it in CP/M and then move it from inside CP/M to the SD card as a file.
I suspect MyZ80 does not understand the disk geometry of the 8MB hard disk images we are using for CP/M on the Prop. That is to say we are using number of sectors per track, number of tracks, interleaving, etc that it does not know.
Perhaps there is a way to configure MyZ80 drives with our geometry parameters.
It's just that in the CP/M world there were a huge number of different disk layouts especially for hard drives.
As I said it's just me wanting to try something else.
@Leon
I built up an expanded version of what you show, about a year ago. I put on more LEDs and a few switches and got a 5 stage up/down counter running ok.
I also use the enormous WebISE for CPLD programming , and not even a XL version, just plain old XC9536 . At least I'm not using schematics any more and learned Verilog.
The VCCIO (no XL versions) can be powered by either a 5V or a 3.3V source for compatibility. When powered by 3.3V it is 5V tolerant.
If you want to go a step further I'd recommend you go the Spartan3AN route (XC3S50AN tqfp144). It has internal flash and costs some 8 Euro. The Altera devices only need 1 supply but they are way more expensive !.
Sorry if I high-jacked the thread ;-)
There are so many things that I wish I knew better, like Verilog orVDHL.
I tried to change the DracBlade in so many ways in an attempt to get a better understanding. I always end up getting back to Dr_A's latches and static RAM and feeling as if I failed.
Usual motto "knows a bit about a lot of things, but not enough of each"
My useage of the through hole bases does leave it on thread.
I found out that if I write down a schematic, a description of what I want and A time vs logic-level diagram I can build a picture of how the thing has to work. Of course testing something out gets in the way of proper planning... but well at some point you have to try to build your idea and see it in real life. I write this while I work on pPropQL again, this time on the CPLD powered version. A very nice through-hole propeller board
Do you have a place where to learn about xmodem and file transfer between a terminal and CP/M on the SD card ?
As for "large chips only" take a look at the acreage of the PLCC84.
All The lovely colours !
PS is it just me, or does the picture upload take forever now?
For CP/M, there is a compile switch in cpm.spin
If you change this, then the program talks to the serial port rather than the vga display. (If you boot into Kyedos, you could have two versions of CP/M and run the one you want).
If you set up Teraterm for a baud rate of 38400 then it should display CP/M. (If you are booting into Kyedos, Kyedos will also appear in the terminal. Kyedos accepts input from the serial port or the local keyboard, and prints to the vga display, the 20x4 LCD display and to the serial port).
If you are in CP/M, use XMODEMF R MYFILE.TXT
You now have about 30 seconds to tell teraterm to send the file. Don't worry if it times out the first time - you get quicker!
Then in teraterm, File/Transfer/Xmodem/Send
As an aside, Peter Schorn has given me the links to the source for w.com and r.com. So I'll take a look at them shortly.
Addit: for those interested in the ability to move files from within CP/M to the sd card, attached is the source for READ. It is writting in Peter's own language called SPL which he says he wrote 25 years ago, and which strangely seems to have some things in common with Spin. I think they both might share Pascal roots.
The bit that is eluding me in this code is where it opens the file on the PC directory (which for us would be on the sd card)
Sorry for not answering earlier but we had old friends at home from Saturday till now.
Thank you for the information. I am going to examine and investigate all this, but tomorrow I'll be absent again for the day.
As you know, there is always something failing at the first time.
I'll try to describe exactly what I've done, in the hope that you see where I'm wrong.
- I made a copy of cpm.spin, renamed it as cpmcom.spin and loaded it into BST (see first picture, first arrow)
- I commented the line "#define USER0_PS2_VGA" (second arrow). I then compiled the file and saved it as cpmcom.bin on the disk.
- I copied cpmcom.bin on the SD Card and I started KyeDos (see second picture).
- I downloaded Teraterm, unzipped it, started Teraterm.exe
- I adapted the Serial Port Setup to COM3 and 38400 BAUD (see third picture).
Now, when I type something in the terminal, nothing appears on the Prop screen and when I type something in Kyedos, it doesn't appear in the terminal screen.Moreover, if I type "Spin cpmcom.bin" in KyeDos, I get a black screen with a green blinking cursor in the left upper corner. Then if I type "DIR" or another command on the Prop keyboard or on the PC keyboard, I get no result. I have to reset the Prop to come back to KyeDos.
According to what you say, I think I should see the KyeDos screen in the Terminal screen. If I don't see it, it suggests that the COM is not working. However, I use the same COM and the same cable to program the EEPROM (with P30 and P31).
Kyedos should always work. I put kyedos on the eeprom.
On the SD card I have two versions of CP/M eg CPM1.BIN and CPM2.BIN, and one is compiled with that line commented and one is compiled with it not commented.
Sometimes you get a bad download, so I copy them to the SD card by removing the card.
With the com port, it needs to be the same as the one the proptool is using. Is that COM1 or COM3? So it is important to shut down the Proptool before opening Teraterm. You can't have both open at the same time.
Of course, what you will discover is that when you want it on the local VGA display, you want to do a download, and when you are running the serial port version, you can't see anything on the display. The answer to this has been MP/M - with one user on the serial port and one on the local display, and 4 sitting in the background running background programs. The problem - MP/M is not stable on the propeller and crashes from time to time. I have not solved this problem. I have a new board I am soldering up that has a real Z80 and maybe that will fix the problem.
Meanwhile, I've been programming in C in CP/M and then looking at moving that code to Catalina, which can run very nicely on the dracblade board.
To start with, I wanted to test the serial communication.
I loaded the EEPROM with:
┌─────────────────────────┐
│ Parallax Serial Terminal Demo v1.0
│ Author: Jeff Martin
│ Copyright (c) 2009 Parallax Inc.
│ See end of file for terms of use.
└─────────────────────────┘
On the PC, I started the Parallax Serial Terminal with 115200 as a Baud Rate and COM3 as Serial Port (I use COM3 on the rear of the PC because COM1 and COM2 are on the mother board). Then I reset the Prop and a few seconds later I saw the message "KBMTest Keyboard present" on the terminal.
I renewed the test with Br@y's Terminal: I got the same success.
On the contrary, the test failed with Teraterm. Nothing appeared on the terminal screen.
In the download files of Teraterm, there is a README.TXT that says:
2) Copy all the distribution files to an empty floppy disk or temporary directory (for example C:\TEMP).
3) Run SETUP.EXE and follow the instruction given by it.
4) ..
Thus I guess Teraterm is not properly installed. Perhaps it is the reason why it isn't functioning.
So I searched Internet and downloaded the 4.67 version from SourceForge.jp
There was only 1 file called "teraterm-4.67.exe" which installed Teraterm on the PC.
After configuring COM3 and Baud Rate, I reset KyeDos ==> Nothing was written on the Teraterm screen.
I tried again the "kbmtest"
- with Br@y's Terminal ==> OK
- with the new Teraterm ==> no result
It becomes more and more difficult to imagine what's happeningAlthough Parallax Terminal and Br@y's Terminal receive messages from KBMtest, they don't receive anything from KyeDos. I don't know what to think about that.
There is a terminal monitor program but it is 2.4Mb and I'm not sure I can attach it here. Maybe send it by email if not?
Another option is to get a different terminal program. You could try this one http://www.freedownloadsplace.com/Products/16073/ShamCom
I just tested it now with Kyedos and it is working.
Or extraputty http://www.extraputty.com/ I just tested that and it works too.
Hyperterminal also works - some versions of windows have this in the Programs/Accessories folder.
If none of that works, we are back to basics. Add a led to the Tx and Rx lines on the propeller. (They are active low signals, so 3V => 220ohm resistor => anode => cathode => propeller pin.) Some of my later boards have these leds and there have been a few times where it has been very useful to see the leds flashing to confirm serial data is working.
I downloaded and installed ShamCom and extraputty. So I have 6 terminals to play with:
Now the tests begin.
Looking at the LEDs, I saw that the Tx LED didn't blink when starting or resetting KyeDos.
I then tried to replace KyeDos by the original soft of Kye, I mean "SD2.0_FATDemo". With this soft, I can see the flash of the Tx LED when resetting. So the first problem seems to come from my version of KyeDos which doesn't send anything to the terminal. Perhaps I unconsciously deactivated the serial com while working on the keyboard
But it is not the only problem.
"SD2.0_FATDemo" with Parallax Serial Terminal
The prompt appears when resetting.
The list of commands appears when typing "help" in the terminal.
"SD2.0_FATDemo" with Br@y's Terminal
The prompt appears when resetting.
The list of commands appears when typing "help" in the terminal.
"SD2.0_FATDemo" with Tera Term
The Tx LED blinks when resetting but no prompt is visible.
The Rx LED blinks at each letter I type in the terminal.
After typing "HELP", the Tx LED blinks while sending the list of commands but nothing appears on the terminal screen. So I am pretty sure Tera Term sends the right "HELP" and SD2.0 sends back the right answer but Tera Term doen't show what it receives. Why ? This is the second problem.
"SD2.0_FATDemo" with Absolute Telnet
Exactly the same results as with Tera Term
"SD2.0_FATDemo" with ShamCom
The Tx LED is blinking when resetting but no prompt is visible
Any typed character makes a sound like an error and the Rx LED doesn't blink. This is a third problem (only for ShamCom).
There is no answer of the Tx LED when typing "Help"
"SD2.0_FATDemo" with ExtraPuTTY
Exactly the same results as with Tera Term
Trying to solve or at least to enlighten the first problem, I unzipped your original KyeDos zip file in a new directory and downloaded the soft to the EEPROM. ==> Same result. I mean that this version of KyeDos doen't speak to the serial com.
The third picture shows the files in the zip. Do you see a difference with the version you use ?
I took a look at the schematic. This is different to my schematic - I use a max232. A max232 makes its own negative volts so does not depend on volts coming down the D9 on other pins.
I can see a potential problem - on data going out of your board on pin 2 of the D9, I think that is pulled negative (maybe minus 12V) by the signal on pin 4?
So if a terminal program set pin 4 to high, would this stop data going out of pin 2? Pin 2 would never go less than 3V?
I am wondering if this might explain why some terminals work and some do not.
Also, you could write an extremely simple spin program that just sends "hello" out the serial port when you restart. That might help debugging.
For Parallax Serial Terminal and Br@y's Terminal, Pin4 is at -10V ==> they receive messages from the Prop.
Pin4 is also at -10V with Absolute Telnet. It is still unclear why this terminal does not receive the signal from the Prop.
The schematic I use comes from the Parallax official download page:
http://www.parallax.com/Portals/0/Downloads/docs/prod/prop/SerialtoPropeller.pdf
However it is proposed as "Serial to Propeller: The Propeller can be programmed via a standard RS-232 serial port with this circuit". It works fine as a programmer but is not suitable for ordinary serial com with a lot of terminals.
I will have to think about a modification of the schematic. Of course a MAX232 or MAX3232 is the simplest way but it would be difficult to make the change without etching a new board. I found an interesting document (attached) explaining how to connect TTL to RS232. It should be possible to adapt it.
So, probably half the problem is on the way to be solved.
It is however still not clear why KyeDos doesn't send anything to the terminal although the original SD Fat Demo of Kye does.
Different software must be able to change the output voltage for when different hardwares are plugged in, such as serial mice (mouses?) or stuff like my PonyProg interface.