Parallax Forums
  HomeLog InRegisterCommunity CalendarSearch the ForumHelp
   
Parallax Forums > Public Forums > Propeller Chip > TriBladeProp PCB: Uses 3 Propeller ICs for a Single Board Computer (SBC)  Forum Quick Jump
 
New Topic Post Reply Printable Version
848 posts in this thread.
Viewing Page :
 
[ << Previous Thread | Next Thread >> ] | Show Newest Post First ]

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 6/5/2009 9:04 PM (GMT -8)    Quote This PostAlert An Admin About This Post.
I see on the underside that the power connector pins at the bottom look like there may be a short. Unfortunately your pics are not that clear.

The easiest way may be to expand my picture (the red one) and follow the 5V copper and look for this short. Start at the 5V pad in the centre of the picture near the words "M"ouse. While the black outline is not al that clear I hope it will give you a clue to where the short is.

I would start at C1, C2, C3 and J3. Then check the mouse and VGA pins.

BTW Tantalums were recommended for C2 & C3. While it will probably be ok, I cannot guarantee this. Do not overclock the props unless you fit a tantalum under each prop.


Links to other interesting threads:
Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 6/20/2009 6:49 PM (GMT -8)    Quote This PostAlert An Admin About This Post.
The following is the answer to questions asked in a PM that I thought I would share with you.
 
The TriBlade is basically 5 seperate (self-contained) sections...
  • power supply (5V & 3V3 regulators)
  • PropPlug equivalent (USB to serial with reset capability)
  • Blade #1: Propeller chip with options for EEPROM, VGA, TV, Keyboard, Mouse, 512KByte SRAM using a latch, and 1-8MByte SPI Flash chip. Some options preclude others. It has a PropPlug input header.
  • Blade #2: Propeller chip with options for EEPROM, 2 x 512KByte (2 x 2MByte with very expensive chips) SRAM, latch for address decoding and resets to Blades #1 & #3, microSD socket, 1-8MByte SPI Flash chip. It has a PropPlug input header. The only external connection is via the 2 pin I/O which is also on the PropPlug header as all I/Os are used with the SRAM, etc.
  • Blade #3: Propeller chip with options for EEPROM and various header pins for connections to the unused I/Os. It has a PropPlug input header and another 2 wire (serial) connection to #2.

Now for the interconnection and programmability...

  • I have designed the pcb with the objective that #2 can reprogram #1 & #3 so an EEPROM is not required for #1 and/or #3.
  • It is not required to fit all options, nor all props, nor the internal PropPlug (external PropPlug OK).
  • So the pcb is EXTREMELY flexible although that is not apparent from the circuit.
  • I have a 2 wire bus that can be linked between #1 - #2 - #3 (P30 & P31) so that they can communicate via a 2 wire protocol. I envisage an ultra high speed serial (as Beau has proved) >1MBytes/s protocol between the 3 Blades (props). So far, I only have connected 2 blades together so have just used plainf FullDuplexSerial at 115200 baud.
  • #2 can boot a propeller binary from the uSD card with appropriate code in the EEPROM (working). The binary can be PropDos, ZiCog + CPM, or any other prop binary (working).

So, to answer your question, the props on the TriBlade are seperate AND able to interact, AND yes one prop can instruct/command/program the others (via #2).

You may also like to see the RamBlade and TwinBlade threads, although progress has been slow due to other constraints.

Shameless plug: There are still a few pcbs available.


Links to other interesting threads:
My cruising website is:  www.bluemagic.biz   MultiBladeProp is: www.bluemagic.biz/cluso.htm

Post Edited (Cluso99) : 6/21/2009 3:03:53 AM GMT

Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/4/2009 2:25 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Answers for the TriBlade from questions on the ZiCog thread...
 
The best place to start is download the code and SD card files from the post at the top of Page 4 of this thread. There is a good explanation of the files. Near the bottom of that page is a binary file which can be programmed into the eeprom to boot PropCmd and a binary file to place on the SD card to boot ZiCog.
 
Page 4 also contains a lot of information about the TriBlade and ZiCog and I suggest you read this.
 
As soon as I can get a new TriBlade built I will publish the latest code.
 
TriBlade "ZiCog_demoXXX_rrXXX.spin" code is for Blade #2 ONLY:
PC_Keyboard.spin and PC_Text.spin use the serial (program pins) to connect via a propplug (or equivalent) to the PC and the PC runs PropTerminal to emulate the Keyboard and Display. DO NOT substitute these with "Keyboard.spin, VGA.spin or TV_text". The TriBlade #2 does not support the keyboard or display (tv or vga) on this prop. It can communicate via the serial lines to another prop (Blade #1 or #3) which can act as a terminal, depending on the options wired.
 
1. Get ZiCog running on Blade #2 to the PC
2. Make sure you can do a SURVEY and run MSBasic
3. Now get Blade #1 running a Terminal Program (and the PC via propplug)
4. Now you can modify Blades #1 & #2 to talk to each other, replacing the PC.
 
I will post more details for this when I get my next TriBlade working.
Hope this helps for now.


Links to other interesting threads:
Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/4/2009 5:37 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Hi Cluso.

It is all very close now. On the link at the top of page 4 of this thread is a link to a zip file called TriBladeProp_Zicog_rr068.zip Unzip this as a package and it contains a file z.bat. This contains a line
homespun024 zicog_demo006_rr069 -b -d -i3 -w

a minor bug in that the file demo006_rr069 does not exist in the zip. It is actually rr068 so I changed it to 68

(I seem to have a file rr090 so this appears to be a fairly old version)

However, the zip package does compile as a unit which is great news! A few warning messages:

C:\Propeller\zicog68>homespun024 zicog_demo006_rr068 -b -d -i3 -w
Homespun Spin Compiler 0.24
parsing zicog_demo006_rr068.spin
parsing zicog005_rr021.spin
Warning: zicog005_rr021.spin (191, 33): JMP with non-immediate operand
vect_1 jmp vector 'Jump to the instruct
ion handler
^
Warning: zicog005_rr021.spin (195, 33): JMP with non-immediate operand
jmp vector
^
Warning: zicog005_rr021.spin (369, 33): JMP with non-immediate operand
if_nz jmp jump_rel_unconditional 'Jump if not zero
^
Warning: zicog005_rr021.spin (1446, 33): JMP with non-immediate operand
jmp OVERLAY_LOAD_RET 'return (indirect) to
calling routine
^
parsing PC_Keyboard.spin
parsing PC_Text.spin
parsing TriBladeProp_Blade2_201.spin
parsing FullDuplexSerialPlus.spin
parsing fsrwFemto.spin
parsing sdspiFemto.spin
compiling zicog_demo006_rr068.spin
compiling zicog005_rr021.spin
compiling PC_Keyboard.spin
compiling PC_Text.spin
compiling TriBladeProp_Blade2_201.spin
compiling FullDuplexSerialPlus.spin
compiling fsrwFemto.spin
compiling sdspiFemto.spin
writing zicog_demo006_rr068.binary
Writing listing to zicog_demo006_rr068.lst


Then had to drop the baud rate back to 38400 (that is just me and my 2 metre serial cable) and I've got it to the point of printing:

TriBladeProp: Load SRAM from microSD (Y/N)?

Ok, on to getting some files on the sd card...

Addit:

Getting an error saying the code is halting when reading the sd card.

I see this code:

FindDriveBase(0, string("DRIVE__A.DSK")) 'set the SD card drive base(s)
FindDriveBase(1, string("DRIVE__B.DSK")) 'set the SD card drive base(s)
FindDriveBase(2, string("DRIVE__C.DSK")) 'set the SD card drive base(s)
FindDriveBase(3, string("DRIVE__D.DSK")) 'set the SD card drive base(s)
FindDriveBase(4, string("DRIVE__E.DSK")) 'set the SD card drive base(s)
FindDriveBase(5, string("DRIVE__F.DSK")) 'set the SD card drive base(s)
FindDriveBase(6, string("DRVCPM_2.DSK")) 'set the SD card drive base(s)
FindDriveBase(7, string("DRVCPM_3.DSK")) 'set the SD card drive base(s)

r := sd.stopSDCard 'stop SD card, but do not stop cog
check_error(r)

But the package at the top of page 4 only contains 3 files. Could the missing files be the reason it is halting?

Post Edited (Dr_Acula (James Moxham)) : 8/4/2009 2:25:27 PM GMT

Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/4/2009 7:10 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
James: The warnings about jmps are just that - they are not errors and they can be turned off, but this is a common programming error, just in our case this is correct.

As for the files required on the uSD. They have to be contiguous, so reformat the card, then copy the files as you have described above.
DRIVE__A.DSK should be a copy of the DRVCPM_2.DSK. DRIVE__B.DSK to DRIVE__F.DSK should be copies of the blank disk (think I called it something like BLANK32M.DSK). These files were all compressed in the files on Page 4.

Just try the files at the top of page 4 for now. V090 jumped to synchronise with heaters v0.09 ZiCog code. I probably had other fixes in there also, so just ignore v090 for now.

Make sure you read the errata. You will need to follow this for the -OE mod to the sram on Blade #2. It is also on my website www.bluemagic.biz/cluso.htm

I hope to have my TriBlade running tomorrow when I can recompile the latest code and check it all works ok. Then I will post it. So please just hang in there till then.


Links to other interesting threads:
Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/4/2009 3:58 PM (GMT -8)    Quote This PostAlert An Admin About This Post.
Re "DRIVE__A.DSK should be a copy of the DRVCPM_2.DSK. DRIVE__B.DSK to DRIVE__F.DSK should be copies of the blank disk (think I called it something like BLANK32M.DSK). These files were all compressed in the files on Page 4."

Great news. So, disk A is the disk with CP/M on it? If the others are just blank disks to start then that makes things a lot simpler. Looking forward to getting home and trying this out.
Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/5/2009 12:34 AM (GMT -8)    Quote This PostAlert An Admin About This Post.

I have just posted updated code to the top of the thread. It consists of all source plus the homespun v024 compiler which is used to compile the code. "z.bat" is a DOS batch file to compile the code. The code also contains the binary, so there is no requirement to compile.

This code loads into Blade #2 and runs ZiCog v009 (TriBlade v091). It uses the serial pins P30/P31 (via the PropPlug circuit) at 115,200 baud to communicate with the PC running PropTerminal. You CANNOT substitute the Keyboard and TV or VGA objects as these may not be connected to Blade #2. Blade #1 can be used for this and I will post this code later.

I have also posted two files which contain the files required to be on the microSD card to run CPM 2.2 & CPM 3 (Note CPM 3 is not working properly).

Posted here is a "Draft" version of the Assembly Instructions for the TriBladeProp board. Also included is a section to format the microSD card on the PC and files to copy to it.

In the following post is the Errata (modifications/fixes) for the pcb and photos.


Links to other interesting threads:
My cruising website is:  www.bluemagic.biz   MultiBladeProp is: www.bluemagic.biz/cluso.htm

Post Edited (Cluso99) : 8/5/2009 9:18:00 AM GMT


Image Attachment :
Image Preview
TBP_B2.JPG
  135KB (image/pjpeg)
This image has been viewed 32 time(s).
Image Attachment :
Image Preview
TBP_B2r.JPG
  104KB (image/pjpeg)
This image has been viewed 35 time(s).
Image Attachment :
Image Preview
tribladeprop_a1d.JPG
  186KB (image/pjpeg)
This image has been viewed 40 time(s).

File Attachment :
TriBladeProp Assembly Instructions.txt   5KB (text/plain)
This file has been downloaded 34 time(s).
Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/5/2009 12:35 AM (GMT -8)    Quote This PostAlert An Admin About This Post.

Errata for building the TriBladeProp board.

The suggested modification for swapping the serial lines over between Blades #1 and #2 should be preferably done by using 150R resistors (to replace the green wires shown). Be careful not to allow the resistors to short.



Links to other interesting threads:
My cruising website is:  www.bluemagic.biz   MultiBladeProp is: www.bluemagic.biz/cluso.htm

Post Edited (Cluso99) : 8/5/2009 8:55:20 AM GMT


Image Attachment :
Image Preview
tribladeprop_a1a.JPG
  63KB (image/pjpeg)
This image has been viewed 36 time(s).
Image Attachment :
Image Preview
tribladeprop_a1c.JPG
  93KB (image/pjpeg)
This image has been viewed 36 time(s).
Image Attachment :
Image Preview
SuggestedTBPmod_20090427.JPG
  71KB (image/pjpeg)
This image has been viewed 32 time(s).

File Attachment :
tribladeprop_errata_rev_a1.pdf   26KB (application/pdf)
This file has been downloaded 25 time(s).
Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/5/2009 12:57 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Many thanks Cluso. Am downloading the disk images now. My sd card access is not so fast - maybe only USB1 as it is taking over an hour to send all the disk images. Anyway, 3/4 of the way there now. I tweaked a few lines of code eg
debug.str(string(13,13)) has been changed to debug.str(string(13,10))
There are a few 13s through the code and the terminal programs I'm using expect 13 (carriage return) and 10 (line feed).

13 by itself only puts the cursor back at the beginning of the line. It is a minor thing though, but is good to test the compile/download cycle. z.bat does the compile. For download, I'm doubleclicking on the .binary and that opens up the propeller IDE and does the download. Is there a quicker way to do the download eg another little batch program?
Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/5/2009 1:19 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Propellent can do it but I have never used it - someone else may care to comment. However, once I get onto bst I think this can all be done within the same IDE.

What do you mean the sd card is slow? Are you using a USB to microSD adapter? One of my laptops has an SD slot :-)

As you may have gathered, I have Blade #2 running on the newly built TriBlade, plus the power supply and propplug sections (see photos above). Ross - did you hear that :-)


Links to other interesting threads:
Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/5/2009 2:16 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Screen dump below. Have changed quite a number of lines. Baudrate in 3 places (text out, text in and the main program) to 38k. Multiple instances of 13 out changed to 13 then 10. And commented out the 10 catch here as I want to send out the 10.'

PRI out_condata
'Handle writes to the console data output port
'data := data & $7F 'Use this for 4KBASIC which spits out crap
'if io_data <> 10
TV.out(io_data)

Screen dump. It works!!

Triblade Prop

Starting disks...
A:B:C:D:E:F:G:H:Loading SRAM...
0.1.2.3.4.5.6.7.................................................................
........................................................ Loaded
ZiCog v0.006 on the TriBladeProp v0.06x
Starting Z80 emulation...ver ... Passed
Passed
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.25, 2 HD, 15-Jan-07)

A>dir
A: ASM COM : BDOS MAC : BOOT COM : BOOT MAC
A: SYSCPM2 SUB : CBIOSX MAC : CCP MAC : CCPZ MAC
A: CCPZ TXT : CFGCCP LIB : CFGCCPZ LIB : COPY COM
A: CPU COM : CPU MAC : CREF80 COM : DDT COM
A: DDTZ COM : SYSCPM2Z SUB : DO COM : DSKBOOT MAC
A: DUMP COM : ED COM : ELIZA BAS : EX MAC
A: EX SUB : EX8080 COM : EXZ80ALL COM : EXZ80DOC COM
A: FORMAT COM : GO COM : HALT COM : PRELIM MAC
A: HDSKBOOT MAC : L80 COM : LADDER COM : LADDER DAT
A: LIB80 COM : LOAD COM : LS COM : LU COM
A: M80 COM : MBASIC COM : MC SUB : MCC SUB
A: MCCL SUB : MOVER MAC : OTHELLO COM : PIP COM
A: PRELIM COM : EC8080 LIB : RSETSIMH COM : RSETSIMH MAC
A: SID COM : ECZ80ALL LIB : STAT COM : SUBMIT COM
A: SURVEY COM : SURVEY MAC : ECZ80DOC LIB : BOOTGEN COM
A: DIF COM : TIMER COM : TIMER MAC : UNCR COM
A: UNERA COM : UNERA MAC : USQ COM : HDIR COM
A: WM COM : WM HLP : WORM COM : R COM
A: XSUB COM : ZAP COM : ZSID COM : ZTRAN4 COM
A: SHOWSEC COM : SPEED COM : SYSCOPY COM : W COM
A: XFORMAT COM
A>


......................

Some experiments:

Loading mbasic =14 seconds (is that correct)
N8VEM loading mbasic off the ramdisk = 0.5 seconds

mbasic speed test
10 for a=1 to 10000
20 next a

on triblade=14 seconds
on N8VEM running at 3.68Mhz=13 seconds

So it appears to run pretty much the same speed as the (slightly underclocked) N8VEM. Load times are longer though.

Hmm - makes one wonder about a battery backed ramdisk like the N8VEM. Just a DS1210 chip and a 3 V coin cell.

Heater, can we maybe brainstorm how much it would slow down the emulation to latch two address chips and then the data and get it onto one prop. Even if it slowed down by 20% I think that wouldn't matter much.

Also - anyone got xmodem working for file transfers?

Addit: musings re xmodem (unless anyone does have it working). xmodem means you can send a file from any terminal program, or transfer via radio modules etc. There are three simple I/O ports to trap.
MODCTLP:.EQU 06DH ; PUT YOUR MODEM STATUS PORT HERE (returns either 00000000 or 00000001)
MODDATP:.EQU 068H ; YOUR MODEM DATA IN PORT
MODDATO:.EQU 068H ; YOUR MODEM DATA OUT PORT

6DH and 68H happen to be the addresses for the N8VEM, and the input and output ports are the same 68H

For some simple code, could you trap these within the simulation? Testing a byte is ready would check the fullduplexserialplus cog code to see if a byte is available or not. An out to a designated port would send out a byte to TV.out and an input would receive it.

There are also some addresses to OUT to which change the baud rate for a true uart simulation.

Down the track if a few pins could be freed up on the prop, it could have a second port, so one could be serial for the terminal, and a second port is for transfers. Like on a real CP/M computer. This is something I'm pondering re the tradeoff of putting it all on one chip - it runs a bit slower, but if you can free up some pins you could have even 3 serial ports. Then you can run asynchronous serial routing with buffers - something that very few systems can do and which would truly show off the parallel processing power of the propeller.

Post Edited (Dr_Acula (James Moxham)) : 8/5/2009 11:00:44 AM GMT

Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/5/2009 3:22 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Congratulations James :-) I see the A> prompt and more.

Timings... Lonesock and Rokiki have a new fast SD access routine which I am yet to try. This should speed things up a lot.

Heater is trapping all IN & OUT instructions so we can do what we like with it. Heater has it running on one prop. It could run on Blade #1 as that has latching for the upper address bits. However, my minimal RamBlade is so simple (no latches and the eeprom/simulator is optional) there seems no reason not to use a second prop for all the I/O. The TwinBlade will do this. For a minimal system though, the RamBlade will be able to run with a keyboard and a monochrome composite TV out - not bad in about 1x1.8" pcb. Ram will only be 256KB if using TV out. Expecting to run at 120MHz overclocking, but will be testing higher.

As for 2 serial ports, RamBlade could do that but RAM would then be 128KB (will require a track cut and wire).

I see you are running v06x. I posted v091 today which incorporates heaters v009 ZiCog.

Have you done a DIR on all drives A..H then a SURVEY ??

Re CR+LF, it would be simpler to modify PC_Text.spin to add 10 after every 13.


Links to other interesting threads:
My cruising website is:  www.bluemagic.biz   MultiBladeProp is: www.bluemagic.biz/cluso.htm

Post Edited (Cluso99) : 8/5/2009 11:34:12 AM GMT

Back to Top
 

heater
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Feb 2008
Total Posts : 1832
 
   Posted 8/5/2009 4:16 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Dr_A: Well done !

Sorry I don't have time to play along.

A few things are not quite right. You have some missing chars and/or garbled characters after "Starting Z80 emulation.." and the format of the DIR listing is a mess (missing TABs ?)

I'm amazed that a) the disk load is so slow and b) the emulation is so fast compared to N8VEM !!!

Adding new I/O ports as you describe should be easy. The hardware emulation spin code already traps for console port I/O as you describe , data out, data ready and data in. One only needs to add some extra cases to the code to check for the new port numbers. Have a look at what it does for the console ports.

How about hacking a new xmodem.asm that uses the existing console ports?

Yes we should think about a poor mans single Prop version. I have a stack of old 32K SRAMs waiting for it:)


For me, the past is not over yet.

Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/5/2009 4:33 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Garbled chars - yes working on that. Seems to be worse on one PC terminal vs another. Something is strangely wrong with my power supply - some data outputs from the board to the PC end up drawing lots of current and collapsing the power supply. Not sure why - there are resistors between that and the max232. Anyway - no matter, I just want to get this working and a 4700uF across the 3V rail is fixing it for the moment.

DIR listing is perfect - the misalignment is just a function of the copy and paste into the forum.

Disk load is very slow. But Cluso says he is going to fix that. Emulation is extraordinarily fast. More than enough for my purposes (and remember, you can't beat Pacman with a fast clock!)

Adding new ports. Help there would be great. I got to here:

A>mbasic
BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Microsoft
Created: 28-Jul-81
32824 Bytes free
Ok
out 255,1
Write to unimplemented I/O Port $FF,01
Ok


using this code
PRI on_output
...
other:
TV.str(string("Write to unimplemented I/O Port $"))
TV.hex(io_port,2) ' port number
TV.str(string(","))
TV.hex(io_data,2) ' write byte
TV.out(13)
TV.out(10)

So can trap Out and IN should be similar.
PRI on_input
...
other:
'TV.str(string("Read from unimplemented I/O Port $"))
'TV.hex(io_port,2)
'TV.out(13)
'io_data := 0
All I need to get xmodem working is to trap an In to a specific port number, and use that to ask the serialspin object "do you have a byte in your buffer?" Reading data between cogs is something I don't quite understand so help there would be appreciated.

I might even use the N8VEM uart port numbers as then all the code will be the same.

A stack of 32k srams eh? Well funny you should say that coz that is my motivation too!
Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/5/2009 5:20 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
James: The latest code fixes a conflict problem which required me to restart the cog in the older code for SD access. So please move to v091 code and try that.
You could modify PC_Text to insert 10 after 13 (CR+LF).


Links to other interesting threads:
Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/5/2009 5:38 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
ok, will do. What are the rules about multiple people writing code? Does one modify the code and also add the modification to the top in the comments section? And then where is it sent - is the moderator Heater or Cluso? Can mods be rejected? Is it going to be difficult if I go and add 10 after every 13 for instance?

As you can see, I'm bursting with ideas now. I'd love to get xmodem working. And it would be great to be able to change the baud rate from within CP/M by sending a few specific OUT bytes.
Back to Top
 

Yoda
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Mar 2009
Total Posts : 61
 
   Posted 8/5/2009 6:08 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
James,

Congrats - you finally got here jumpin The CR problem is the one I alluded to earlier. You can actually fix in one place. In Cluso's driver he actually discards the the linefeeds because the PropTerm already inserts them. I think if you look for where he checks for the character 10 and drops it on the floor and comment that it out it will fix the CR/LF problem.

So for your information - I just downloaded the PockeTerm code into blade 1 and made sure the serial in/out were directed to p30/p31 and upped the baud rate to 115K so it corresponded to the Blade 2 setting and you will have your terminal on the TriBlade - no external connection to a PC or terminal - just hook up vga and keyboard to Blade 1.

Dave
Back to Top
 

Yoda
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Mar 2009
Total Posts : 61
 
   Posted 8/5/2009 6:19 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
James,

Just to be clear in the Linefeed problem (10), go to zicog_demo009_rr091 or equiv and find function out_condata. If you look at the end of it, it says if io_data <> 10. Just remove that line and leave the TV.out(io_data) at the nest level of the statement above the if. The if is causing it to throw all the linefeeds (10) on the floor.

Dave
Back to Top
 

heater
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Feb 2008
Total Posts : 1832
 
   Posted 8/5/2009 6:24 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Hmm.. Good point about the various versions. So far Cluso and I have been collaborating on a single version that builds for Prop Demo board or TriBlade form a single set of source files. All two of them. Basically I was progressing with the opcode and hardware emulation and Cluso was making changes to get it running on the TriBlade. That has worked out so far mainly because there were only two of us but partly because the end functionality was always the same i.e. The hardware interfaces that the Z80 sees are exactly the same as provided by the SIMH Z80 emulator.
So there was a common target for console ports, disk driver ports, banked RAM ports etc. Also a common aim in CP/M and BIOS verisons to support.

If we get into the world of adding "non standard" or at least different peripheral hardware emulation life will get a lot more complicated. And even more so if custom CP/M code is introduced. In fact it becomes a different project as the requirement spec becomes different.

Still I'd like if all real hardware platforms Demo Board, Triblade, etc could be supported from a single source code base. It will get messy trying to support different emulated peripherals as well though, with a million combinations of #defines to think about. Might get easier if we split up the functionality into different files.

I have to think on this a bit.

In the mean time there is no reason you cant create your own version of the package and post it as long as it carries a different name and its clear what it does and what it runs on.


For me, the past is not over yet.

Back to Top
 

Yoda
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Mar 2009
Total Posts : 61
 
   Posted 8/5/2009 6:32 AM (GMT -8)    Quote This PostAlert An Admin About This Post.
Heater,

I think most of the changes will come in Cluso's code for hardware emulation. Cluso and I have been chatting in the N8VEM forums where I am doing a propeller I/O board for a SBC z80 system. I plan to ifdef into the code the I/O map for the N8VEM so that we can share microSDs between both projects.

I can forsee some forking of the CBIOS code as the disk I/O may be different between the 2. I will have to look at the SIMH disk routines and see if it makes sense to emulated the disk controller there or invent one for the N8VEM. Also the banking of memory may be different.

The N8VEM has a ROM that contains a monitor and CP/M in the ROM. I am going to try to just make the monitor be able to boot CP/M from the boot tracks of the emulated disk on the uSD. If that is successful maybe we can come to a common monitor that will be able to boot different variants of CP/M from one of the disk images on the uSD?

Dave
Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/5/2009 2:00 PM (GMT -8)    Quote This PostAlert An Admin About This Post.

Hi All,

CR+LF probably should be in a #define crlf because this problem will exist in various terminal emulations, so I see this as common ground.

Other modifications, as Heater said, should be clearly identified at the top of the code and the filename should reflect this, at least for now.

While my RamBlade uses different hardware mapping, this will be taken care of in another driver. This is because ram access is 75%+ faster. Remember, my objective is emulation speed first, simplicity second, then minimal cost, in that order.

FYI the v090 code had #define 8080 set (cannot recall exact name) instead of Z80. "baud" has been defined, but lower code objects also require changing. v090+ has faster SD access on the TriBlade because I had to do a reset/reload of the cog for each SD access to avoid a hardware conflict with the older v021 TriBlade driver. The fix in the sdspi driver to release the SD D0 pin just sends out a lot of clocks which is slow and happens at the end of each read/write of an SD sector. By using the new SD driver by lonesock/rokiki we should get much faster access, although the TriBlade and RamBlade hardware will preclude read ahead and write behind due to bus conflicts - otherwise latching has to be used which imposes r/w penalties with EVERY ram access. Oh for some more prop pins cry
 
I did not complicate the v091 release with PropDOS/PropCMD which allows the booting of any prop program. I have had this working. This will be great to also load Ross's Catalina C project and also Heaters' MoCog (Motorola 6809) emulation. It will be nice to load all these from a Prop command prompt.cool
 
Now, for the I/O emulation for various hardware. Since heater traps all the In/Out instructions in spin, it may be best if we move this to a ZiCog_IO.spin module (as heater suggested) so that changes for various emulations can be done here, allowing for various forks to use different modules. Does this sound doable ?? I will be using a seperate prop for the I/O anyway, so the driver I use will be minimal as all the hard work will be done on the "other prop/blade". I will just be passing INs and OUTs to the other prop for interpretation via Ultra High Speed Serial (expect about 8MB/s), although initially 115,200 is fine because I can substitute the pc for this.
 
James, are you using RS232 for your link to the PC? If you have a USB on the PC, you will happily get 115,200 over 2m. Improves development imensely cool
 
Yoda, where are the boot tracks stored on the SD card? Are you meaning within the CPM A disk?? IIRC I am loading 64KB into ram from a seperate file on the SD (DRIVE_1M.RAM) but in reality it is only $0000 JMP $FF00 which contains the contents of the file BOOT.COM  I posted the VB6 code (and emailed a copy to James) where I make this and the other CPM files for the SD card.
 
 


Links to other interesting threads:
Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/5/2009 3:12 PM (GMT -8)    Quote This PostAlert An Admin About This Post.
More users = more confusion?! I guess if there are lots of options then it makes sense to try to bring it all to single ifdefs at the beginning of the program, so one change will alter many things automatically.

CRLF is more than just commenting out the single out_condata, as there are multiple instances of the debug object as well in the bootup. Thinking about that more, maybe there needs to be some sort of common text output as it starts off using debug., but changes to tv. half way through the bootup.

I've not used propterm, but rather I've been using a range of terminals (hyperterminal, teraterm etc) as these all have xmodem built in. I particularly like teraterm because it boots up the fastest. They all need the 10.

There is another option re settings, and that is to use Vince's solution with the Pocketerm where he has a line at the bottom with the function keys and what they do. Use a function key to set the baud rate for instance. Or to turn linefeed on or off. Settings are stored in the eeprom. It means you can have one set of code that everyone is using, but still customise it for users without having to do a recompile each time.

re the size of disks, I thought I was doing something wrong there as STAT was reporting them as only 1mb. But I was pretty sure the files I downloaded were 32mb each, and figuring 512 to 128byte sectors, that they were 8mb. Are there some blank 8mb 'hard disk' images that work? It would be pretty simple to move files from a 1mb disk image to an 8mb hard drive image using PIP. I have just tested PIP moving files from one drive to another and it works fine. PIP B:*.*=A:*.*

Baud is mentioned in three seperate places. Is it possible to link these so there is just one setting at the beginning?

Faster sd access sounds great. It ought to speed up the bootup as well. How close is that code?

Yes I'm using plain old RS232 for the download. 38k is more than fast enough for programming a propeller. It may be a little slow for xmodem transfers. I might get one of those USB to serial cables...

Changing baud rate from within software might be just me, but sometimes slow baud rates are useful. Radio goes twice as far at 1200 compared to 9600 baud.

More pins? Yes!! More serial ports? Yes please!

One nice thing about the N8VEM is the faster disk access. Bootup is under 1 second and loading programs about 30x faster. Going off on a tangent, if a ram chip were run from 5V instead of 3V and were linked via 1k resistors to the 3V system, then you could add a DS1210 and have a battery backed ram. You could then put in an SD card and move files over to the battery backed ram. If that ram also had a couple of boot tracks it could load CP/M. Then you could remove the sd card. The spincode could check for the sd card, and if not present, try booting from the ram drive instead. That would use less power too as you don't need to power an sd card.

A zicog I/O module? Yes, that could be an option. I was just going to write some PRI's to do things like trap an IO that changes the baud rate, and then change it etc.

I think tonight I might fire up Eagle and try some ideas with getting it onto one propeller. It may or may not work but it would be just cool to get this onto one chip. Even if it is a bit slower than a real CP/M computer. Though with a ramdrive and overclocking counteracting the need for a few more latch addresses, I think it could still come out at about the same as a 4Mhz machine.
Back to Top
 

Yoda
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Mar 2009
Total Posts : 61
 
   Posted 8/5/2009 4:47 PM (GMT -8)    Quote This PostAlert An Admin About This Post.
Cluso: Yes I wanted to use the reserved sectors on the DISKA for the CP/M code and boot loader. That way you could use the standard CP/M tools like sysgen, etc to develop your CP/M code. So are you talking basically moving the I/O parts of your driver into a different object? That is OK with me. I think the ifdefs for N8VEM are going to be minimal to the current drivers. It is really just the address you trap for console and disk controller. I can probably make the disk controller look like the the SIMH one on the propIO board but the addresses are probably not going to be the same.

James: I would prefer to use the extra RAM with CP/M 3 to get psuedo caching of files - instead of battery backup. Having track buffers to the uSD I think is the way to go, kind of get the best of both worlds. On the CRLF - I thought you were only concerned about the ones in CP/M. The debug stuff is off the screen quickly and should be ifdef'd if not in the code so you would probably never see them.

Dave
Back to Top
 

Dr_Acula
Registered Member



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Dec 2008
Total Posts : 606
 
   Posted 8/5/2009 5:03 PM (GMT -8)    Quote This PostAlert An Admin About This Post.
Yes, thinking of the N8VEM and I/O, I think there might only be 3 or 4 ports. (I used the 8255 for keyboard etc, but the prop does this anyway). So ignore the 8255, the disk I/O already works fine, so the only ports needed are the ones to talk to the uart. Which are - send a byte, get a byte, check for a byte, change the baud rate. So that is pretty simple and maybe only a few lines of spin. It can sit there dormant for people not emulating the N8VEM as there are plenty of other free I/O ports.

Re the debug stuff on bootup, Yoda says this is off the screen quickly. How quickly, as my card takes about 15 secs to boot up. I'm wondering if my card is a bit slow??

I've just ordered two USB to serial devices - total cost for the two including shipping was only $7.50. I'd love to get xmodem working at 115k.

CP/M 3? Well that would be an amazing thing to see. I see there is a disk image around with CP/M3 in the name - is this working yet?

Post Edited (Dr_Acula (James Moxham)) : 8/6/2009 1:42:18 AM GMT

Back to Top
 

Cluso99
We live onboard



Email Address Not AvailablePersonal Homepage Not AvailablePrivate Messaging Not AvailableAIM Not AvailableICQ Not AvailableY! Not AvailableMSN Not Available
Date Joined Apr 2008
Total Posts : 2276
 
   Posted 8/5/2009 6:36 PM (GMT -8)    Quote This PostAlert An Admin About This Post.

James: The changes from debug to TV were done for a reason but cannot remember why. I think the TV was changing intercepting characters and I was downloading code. I will have a new look at this later. It was a quick fix at the time.shakehead

I am using PropTerminal because I can switch between the IDE and it easily. As soon as I switch to bst I think I can move to this completely as there is a terminal window in the bst IDE as well. CRLF will require more thought to simplify and standardise it.

We could do a baud #define I suppose. Once again, more thought needed. I was not aware that the prop could be loaded at other than 115,200 even though it is quite tolerant (it is using internal clocking). Anyway, I don't expect to be reprogramming the eeprom. Perhaps baud could therefore be defined here and CRLF as well.

We will need some form of Terminal program for Blade #1 such as PockeTerm - not sure of Vince's license - but there are objects around for this.

Disks: The 32MB files are just copies of the 1MB disks into the first 8MB with the remainder of the space unused. This is so the files can remain contiguous. Heater does not have the 2 x 8 MB hard disks working yet (??). However, it may be better to just jump in and change the floppy driver in CPM to use 8MB floppies and forget the hard disks altogether. Heater - any ideas/suggestions?? I have done a format of one of the disks a while ago and then used PIP to copy files. Drive G is a copy of Drive A, so if A gets modified too much, it can be fully restored.cool

SD speed: Have you tried v091 yet. The initialisation is much faster but I am not sure about CPM boot time and access. Perhaps you can time this for me. Not sure when I will get time to use the new SD driver.

Ram Disk: I started out with a 960KB disk image plus 64KB of Z80 Ram before I got the SD working. As for 5V SRAM, I think the resistors could impact ram access times. After Windows, the load time is not a problem for me, but I like the idea of being able to run a ram disk. However, RamBlade will only have 512KB and may even be restricted to 128KB or 256KB if it is a single prop solution. Don't forget, we want 256KB for CPM3 bank switching.

Yoda: Yes sounds good to me roll

CPM3: Yes it runs but there is an I/O problem in that each character you enter requires it to be hit twice on the keyboard. Otherwise I did a dir. Just change the #define and recompile.

SPEED: Overclocking should give us a 6MHz equivalent Z80 :p  And we can probably still optimise ZiCog and the spin code. BTW Some of the spin code should be PASM = more speed.


Links to other interesting threads:
My cruising website is:  www.bluemagic.biz   MultiBladeProp is: www.bluemagic.biz/cluso.htm

Post Edited (Cluso99) : 8/6/2009 2:42:43 AM GMT

Back to Top
 
[ << Previous Thread | Next Thread >> ]
New Topic Post Reply Printable Version
848 posts in this thread.
Viewing Page :
 
 
Forum Information
Currently it is Friday, November 20, 2009 10:14 PM (GMT -8)
There are a total of 393,733 posts in 55,521 threads.
In the last 3 days there were 83 new threads and 703 reply posts. View Active Threads
Who's Online
This forum has 17687 registered members. Please welcome our newest member, mark09.
50 Guest(s), 5 Registered Member(s) are currently online.  Details
Zoot, Chris Savage (Parallax), Todd Chapman, Nick McClick, Highlandtinker