Author Topic: help! how to make a nsc800 computer?  (Read 67831 times)

0 Members and 1 Guest are viewing this topic.

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #150 on: June 29, 2017, 05:47:33 pm »

Been thinking about this.

1. You tried to use an Arduino to write an EEPROM. Failed, could be lack of programming skills or lack of hardware skills or both.
If this step had worked you would only know what you tried to write to EEPROM matched when when verify read matched. If you had a hardware wiring problem like a swap of A5 with A6, the chip world still verify properly but would not function properly when used with Z80/NSC800.
You would just find it does not work. Hard problem to find with limited test tools.

2. You are now trying to replace a Z80 with an NSC800. Not a big change, but still a change. Hardware change is mostly adding an ALE Latch to capture lower address. Not very hard to test if this is working.

3. You are trying to replace a Z80 SIO chip in grant's CPM design with a  SCN2661. This requires both hardware design & change, and result must be correct. Then you have to create/change grant's code to function properly with this chip.
When you fail, you will have a blob that just does not work. You are missing one very important thing, A way for CPU to tell you some information on what it thinks and sees..
Sticking to this route, you would probably need at min output display for testing programs. Could be simple 8-bit output latch with led's connected to output. In addition to latch, you would need logic that would tell the latch when to capture data( write address decode).

Only if you get all this to work do you start to have some help from a Z80/NSC800 program on what is working or not working.

Now if you were making an exact copy of grant's design & got all the wiring correct, you have a fair chance of of getting IO to and from serial port and have a foundation you can add new software or hardware. One thing wrong and IT's a BLOB.
And when this is all working, it is just the first step. More hardware is needed to to run CPM.   

I would think baby steps that you can verify would be much easer.
A complicated system can be used easer to develop something new. You have more tools you can use to find the problems.

I think you have some knowledge gained when you tried to use an Arduino to program EEPROM.
If a simple step was to connect a small circuit on breadboard to an Arduino and then program the Arduino with an existing program and run it. You have little hardware with known connections and no creating software. If this step is more useful to you then just getting a Z80 running, you gain two ways.

So this is getting long. Short simple steps.
1. use Arduino as ISP to program the Arduino boot loader in blank ATMEGA32A.
2. You now have Arduino boot loader on ATMEGA32A, so you can now use 
 Arduino IDE to program an existing program to ATMEGA32A
At this point you should have a working serial port connection to PC.
3. You wire up 4 chips.
4. At this point when you run the program on ATMEGA32A the first step is to load some existing code into Z80 ram(the Z80 boot loader) and start Z80. For the Z80 the ATMEGA32A is all the IO needed.

You now have access to a lot of software. Basic, CP/M and more.

If you do not like the idea of a  ATMEGA32A supplying IO then you can start adding to system. You have a system that works, adding the SCN2661 will be a lot easer as you have tools to test it's function and not have to work in the dark.
You could add the flash rom you picked to system. Use it to start system when and then as storage(a disk drive)
When you have all the functions and have tested them then the ATMEGA32A could be removed.

1. Arduino as ISP


2. Wire
https://cdn.hackaday.io/files/19000812896000/A041116%20schematic.pdf

3. Run
RETROCOMPUTING FOR $4 WITH A Z80
https://hackaday.com/2017/01/02/retrocomputing-for-4-with-a-z80/


Now that you have a cheap working Z80, You can use what you learned to create a second version with the NSC800 working.

Think this makes more sense then a BLOB that might work.

 
The following users thanked this post: ali6x944

Offline Bruce Abbott

  • Frequent Contributor
  • **
  • Posts: 627
  • Country: nz
    • Bruce Abbott's R/C Models and Electronics
Re: help! how to make a nsc800 computer?
« Reply #151 on: June 29, 2017, 07:49:42 pm »
More hardware is needed to to run CPM.

I would think baby steps that you can verify would be much easier.
Agreed. CP/M is something to think about once you have a basic setup working. You need a disk drive (preferably two drives) and controller, some way to make disk images etc. Not a simple project!

I would start by programming a ROM with a very simple machine code program and replacing the 'nop' generator with it. Run the CPU at 1Hz and verify that the bus lines are doing what you expect. Then add the serial chip and get that to do some simple stuff (eg. send characters to the PC). Finally, add the working serial code to Grant Searle's Nascom BASIC ROM, and you have a complete computer which can run programs written in BASIC etc.

I made a simple Z80 SBC with a 16550 serial chip and 32k ROM and RAM, running Grant Searle's BASIC. I was going to add a 37C665 floppy drive controller but I am now thinking of using a CH376 USB module - just have to port the code over from my other project. The CH376 is very easy to interface and dramatically increases functionality.
 
   
 
The following users thanked this post: ali6x944

Offline ali6x944Topic starter

  • Frequent Contributor
  • **
  • Posts: 567
  • Country: sa
Re: help! how to make a nsc800 computer?
« Reply #152 on: June 29, 2017, 08:31:04 pm »

Been thinking about this.

1. You tried to use an Arduino to write an EEPROM. Failed, could be lack of programming skills or lack of hardware skills or both.
If this step had worked you would only know what you tried to write to EEPROM matched when when verify read matched. If you had a hardware wiring problem like a swap of A5 with A6, the chip world still verify properly but would not function properly when used with Z80/NSC800.
You would just find it does not work. Hard problem to find with limited test tools.

mostly lack of programming skills... :-[

Been thinking about this.

1. You tried to use an Arduino to write an EEPROM. Failed, could be lack of programming skills or lack of hardware skills or both.
If this step had worked you would only know what you tried to write to EEPROM matched when when verify read matched. If you had a hardware wiring problem like a swap of A5 with A6, the chip world still verify properly but would not function properly when used with Z80/NSC800.
You would just find it does not work. Hard problem to find with limited test tools.

2. You are now trying to replace a Z80 with an NSC800. Not a big change, but still a change. Hardware change is mostly adding an ALE Latch to capture lower address. Not very hard to test if this is working.

3. You are trying to replace a Z80 SIO chip in grant's CPM design with a  SCN2661. This requires both hardware design & change, and result must be correct. Then you have to create/change grant's code to function properly with this chip.
When you fail, you will have a blob that just does not work. You are missing one very important thing, A way for CPU to tell you some information on what it thinks and sees..
Sticking to this route, you would probably need at min output display for testing programs. Could be simple 8-bit output latch with led's connected to output. In addition to latch, you would need logic that would tell the latch when to capture data( write address decode).

Only if you get all this to work do you start to have some help from a Z80/NSC800 program on what is working or not working.

Now if you were making an exact copy of grant's design & got all the wiring correct, you have a fair chance of of getting IO to and from serial port and have a foundation you can add new software or hardware. One thing wrong and IT's a BLOB.
And when this is all working, it is just the first step. More hardware is needed to to run CPM.   

I would think baby steps that you can verify would be much easer.
A complicated system can be used easer to develop something new. You have more tools you can use to find the problems.

I think you have some knowledge gained when you tried to use an Arduino to program EEPROM.
If a simple step was to connect a small circuit on breadboard to an Arduino and then program the Arduino with an existing program and run it. You have little hardware with known connections and no creating software. If this step is more useful to you then just getting a Z80 running, you gain two ways.

So this is getting long. Short simple steps.
1. use Arduino as ISP to program the Arduino boot loader in blank ATMEGA32A.
2. You now have Arduino boot loader on ATMEGA32A, so you can now use 
 Arduino IDE to program an existing program to ATMEGA32A
At this point you should have a working serial port connection to PC.
3. You wire up 4 chips.
4. At this point when you run the program on ATMEGA32A the first step is to load some existing code into Z80 ram(the Z80 boot loader) and start Z80. For the Z80 the ATMEGA32A is all the IO needed.

You now have access to a lot of software. Basic, CP/M and more.

If you do not like the idea of a  ATMEGA32A supplying IO then you can start adding to system. You have a system that works, adding the SCN2661 will be a lot easer as you have tools to test it's function and not have to work in the dark.
You could add the flash rom you picked to system. Use it to start system when and then as storage(a disk drive)
When you have all the functions and have tested them then the ATMEGA32A could be removed.


Now that you have a cheap working Z80, You can use what you learned to create a second version with the NSC800 working.

Think this makes more sense then a BLOB that might work.


I agree, but around 1 month ago I fried my only z80 so I must work and learn solely on the NSC800 until the Z80 I ordered from ebay get to saudi...
see unlike the z80, the NSC800 has a minimum operating system clock of around 300khz with oscillator frequency of around 600khz, so it is a bit tricky to do the testing that Bruce Abbott have suggest, but if u have seen the video I made; u can see the testing circuit obviously neglecting the ALE signal and the Address multiplexing action  for eases of demonstration and recreation.

I was thinking of buying a logic analyser but the register based approach seems much practical, and cheaper to employ  :-+
thanks for the great advice m8  :-+
also I have ordered an MC68B50 like the one used in grant's minimal chip count Z80 computer so it cuts a bit of the fiddling around with UART's code which will save me the headache of modifying grant's excellent work and hopefully limit any errors caused by my poor coding skills  :)
« Last Edit: June 29, 2017, 08:33:02 pm by ali6x944 »
 

Offline ali6x944Topic starter

  • Frequent Contributor
  • **
  • Posts: 567
  • Country: sa
Re: help! how to make a nsc800 computer?
« Reply #153 on: June 29, 2017, 08:40:51 pm »
More hardware is needed to to run CPM.

I would think baby steps that you can verify would be much easier.
Agreed. CP/M is something to think about once you have a basic setup working. You need a disk drive (preferably two drives) and controller, some way to make disk images etc. Not a simple project!

I would start by programming a ROM with a very simple machine code program and replacing the 'nop' generator with it. Run the CPU at 1Hz and verify that the bus lines are doing what you expect. Then add the serial chip and get that to do some simple stuff (eg. send characters to the PC). Finally, add the working serial code to Grant Searle's Nascom BASIC ROM, and you have a complete computer which can run programs written in BASIC etc.

I made a simple Z80 SBC with a 16550 serial chip and 32k ROM and RAM, running Grant Searle's BASIC. I was going to add a 37C665 floppy drive controller but I am now thinking of using a CH376 USB module - just have to port the code over from my other project. The CH376 is very easy to interface and dramatically increases functionality.
 
   
:-+
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #154 on: June 29, 2017, 09:08:37 pm »
More hardware is needed to to run CPM.

I would think baby steps that you can verify would be much easier.
Agreed. CP/M is something to think about once you have a basic setup working. You need a disk drive (preferably two drives) and controller, some way to make disk images etc. Not a simple project!
For Grant Searle's version more hardware is needed for CPM. Grant uses a COMPACT FLASH which acts like many big hard drives.

For this version using the ATMEGA32A you have two I2C Flash chips as drives.
https://cdn.hackaday.io/files/19000812896000/A110417.pdf

So NO you do not need Disk Drives and Controller and all that big pile of problems. Both do better then poor floppy drives. The only real need for floppy drives is if you have floppy disks with data or programs as only source.
These days you get programs, data & disk images from INTERNET with a PC.

I would start by programming a ROM with a very simple machine code program and replacing the 'nop' generator with it. Run the CPU at 1Hz and verify that the bus lines are doing what you expect. Then add the serial chip and get that to do some simple stuff (eg. send characters to the PC). Finally, add the working serial code to Grant Searle's Nascom BASIC ROM, and you have a complete computer which can run programs written in BASIC etc.
As stated No ROM needed to start Z80 and no mess getting a working serial interface. The ATMEGA32A is IO, what looks like serial ports and hard drives to the Z80.
If You looked at hackaday you would have seen Basic also.
The ATMEGA32A supplies Z80 clock so should be able to slow z80 clock at any time.
 
I made a simple Z80 SBC with a 16550 serial chip and 32k ROM and RAM, running Grant Searle's BASIC. I was going to add a 37C665 floppy drive controller but I am now thinking of using a CH376 USB module - just have to port the code over from my other project. The CH376 is very easy to interface and dramatically increases functionality.

So what I am reading here is that the  Z80-MBC (Mobile Breadboard Computer) {what I linked to} is more functional then what you have now. It is easer to wire and cheap. To get close to what this is you have to do a lot of Z80 programming and add hardware.


mostly lack of programming skills... :-[
I agree, but around 1 month ago I fried my only z80 so I must work and learn solely on the NSC800 until the Z80 I ordered from ebay get to saudi...
The remaining of quote to me is saying you are going to do what you have had problems doing in the past and only then if all works out have a working system, did I miss something here?

Just quick look at the schematic I linked to looks like very little change is needed to switch from a Z80 to NSC800. A ALE latch with tri-state output could be all change needed.

When you have a working computer things get easer.
« Last Edit: June 29, 2017, 10:36:29 pm by C »
 
The following users thanked this post: ali6x944

Offline ali6x944Topic starter

  • Frequent Contributor
  • **
  • Posts: 567
  • Country: sa
Re: help! how to make a nsc800 computer?
« Reply #155 on: June 29, 2017, 10:49:16 pm »
More hardware is needed to to run CPM.

I would think baby steps that you can verify would be much easier.
Agreed. CP/M is something to think about once you have a basic setup working. You need a disk drive (preferably two drives) and controller, some way to make disk images etc. Not a simple project!
For Grant Searle's version more hardware is needed for CPM. Grant uses a COMPACT FLASH which acts like many big hard drives.

For this version using the ATMEGA32A you have two I2C Flash chips as drives.
https://cdn.hackaday.io/files/19000812896000/A110417.pdf

So NO you do not need Disk Drives and Controller and all that big pile of problems. Both do better then poor floppy drives. The only real need for floppy drives is if you have floppy disks with data or programs as only source.
These days you get programs, data & disk images from INTERNET with a PC.

I would start by programming a ROM with a very simple machine code program and replacing the 'nop' generator with it. Run the CPU at 1Hz and verify that the bus lines are doing what you expect. Then add the serial chip and get that to do some simple stuff (eg. send characters to the PC). Finally, add the working serial code to Grant Searle's Nascom BASIC ROM, and you have a complete computer which can run programs written in BASIC etc.
As stated No ROM needed to start Z80 and no mess getting a working serial interface. The ATMEGA32A is IO, what looks like serial ports and hard drives to the Z80.
If You looked at hackaday you would have seen Basic also.
The ATMEGA32A supplies Z80 clock so should be able to slow z80 clock at any time.
 
I made a simple Z80 SBC with a 16550 serial chip and 32k ROM and RAM, running Grant Searle's BASIC. I was going to add a 37C665 floppy drive controller but I am now thinking of using a CH376 USB module - just have to port the code over from my other project. The CH376 is very easy to interface and dramatically increases functionality.

So what I am reading here is that the  Z80-MBC (Mobile Breadboard Computer) {what I linked to} is more functional then what you have now. It is easer to wire and cheap. To get close to what this is you have to do a lot of Z80 programming and add hardware.


mostly lack of programming skills... :-[
I agree, but around 1 month ago I fried my only z80 so I must work and learn solely on the NSC800 until the Z80 I ordered from ebay get to saudi...
The remaining of quote to me is saying you are going to do what you have had problems doing in the past and only then if all works out have a working system, did I miss something here?

Just quick look at the schematic I linked to looks like very little change is needed to switch from a Z80 to NSC800. A ALE latch with tri-state output could be all change needed.

When you have a working computer things get easer.

Can I use a PIC16f77 or an ATmaga328P instead of ATmega32a?
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #156 on: June 29, 2017, 11:12:33 pm »
Can I use a PIC16f77 or an ATmaga328P instead of ATmega32a?
The big reason for the ATmega32a is the large number of digital io pins, it is a 40 pin dip.

PIC16f77 would require you to create a program. You would have to translate and adapt to pic.   Think this is a fail.

ATmaga328P This chip would be easer on software side, but you do not have enough digital IO pins. This puts you in to modifying software and adding hardware to work around the lack of digital IO pins. This is harder due to most are used as outputs & inputs.

The nice thing about ATmega32a is that what most of what you have learned with Arduino IDE & ATmaga328P & can be used. 

After you get Arduino boot loader programed into ATmega32a, you might think of this as an Arduino with more digital IO
 
 
 
The following users thanked this post: ali6x944

Offline ali6x944Topic starter

  • Frequent Contributor
  • **
  • Posts: 567
  • Country: sa
Re: help! how to make a nsc800 computer?
« Reply #157 on: June 29, 2017, 11:48:37 pm »
Can I use a PIC16f77 or an ATmaga328P instead of ATmega32a?
The big reason for the ATmega32a is the large number of digital io pins, it is a 40 pin dip.

PIC16f77 would require you to create a program. You would have to translate and adapt to pic.   Think this is a fail.

ATmaga328P This chip would be easer on software side, but you do not have enough digital IO pins. This puts you in to modifying software and adding hardware to work around the lack of digital IO pins. This is harder due to most are used as outputs & inputs.

The nice thing about ATmega32a is that what most of what you have learned with Arduino IDE & ATmaga328P & can be used. 

After you get Arduino boot loader programed into ATmega32a, you might think of this as an Arduino with more digital IO
 
 

I understood ur point...
 

Offline Bruce Abbott

  • Frequent Contributor
  • **
  • Posts: 627
  • Country: nz
    • Bruce Abbott's R/C Models and Electronics
Re: help! how to make a nsc800 computer?
« Reply #158 on: June 30, 2017, 08:00:20 am »
Quote from: C
PIC16f77 would require you to create a program. You would have to translate and adapt to pic.   Think this is a fail...

The nice thing about ATmega32a is that what most of what you have learned with Arduino IDE & ATmaga328P & can be used.
I see where you are coming from, and I agree that if ali6x944 has to port or modify the code for a different MCU then it will probably be a fail. The only way it is easier than just burning a ROM is if he can follow an existing design exactly.

As for which way to go, it depends on what he wants to get out of the project. If the goal was just to run CP/M then an ATmega32 and SD-Card could be a good choice. However ali6x944 seems to be interested in how his chips work on a more basic level. I don't think we should discourage him from that.

Perhaps I am biased because I learned from the ground up, but I think it is necessary for a true understanding. The problem I have with learning on the Arduino is that it was never intended for that purpose - and it shows. People think that uploading ready-made sketches will turn them into software and hardware engineers, but as soon as they want do to do something different they are lost - because they never learned how it actually works. 

Quote from: ali6x944
the NSC800 has a minimum operating system clock of around 300khz with oscillator frequency of around 600khz, so it is a bit tricky to do the testing that Bruce Abbott have suggest
Sorry, I must have mixed up this discussion with another  that was talking about single-stepping the CPU. In case you did want to do that, here's one way...

Hardware Single Step for the 8085

And another...

AltairPC clone?! runs BASIC

 
The following users thanked this post: ali6x944

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: help! how to make a nsc800 computer?
« Reply #159 on: June 30, 2017, 03:17:23 pm »
No, it's not a clever idea, it might be a "smart idea" but for me the whole-presentation is a stupid idea that can only be motivated by the "cost", which I find it ridiculous since we all trash hundred dollars in electronic-crap (like arduino's shitty clones and those useless toys sold on ebay, including fake-chips sold for less than one USD), so why on the why we should promote the last "four dollars" of garbage from China?
 
The following users thanked this post: ali6x944

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #160 on: June 30, 2017, 03:43:33 pm »
Quote from: C
PIC16f77 would require you to create a program. You would have to translate and adapt to pic.   Think this is a fail...

The nice thing about ATmega32a is that what most of what you have learned with Arduino IDE & ATmaga328P & can be used.
I see where you are coming from, and I agree that if ali6x944 has to port or modify the code for a different MCU then it will probably be a fail. The only way it is easier than just burning a ROM is if he can follow an existing design exactly.

As for which way to go, it depends on what he wants to get out of the project.
I agree with most of what you are saying Bruce, but have these differences.
Burning a ROM is very easy. Was a real big time delay when you had few of the UV erased PROMS. Things got better. As with most things, better becomes easer. The W27C512 EEPROM generation of chips were much better then UV PROMS, but you needed a programmer or fancy program to change what was programmed. The current generation EEPROMs or Flash based ones are very easy, not as easy as writing to static ram but not hard.
This shows that using newer parts can give more capabilities down the road. Think of a ROM based disk drive, would be nice to not have to remove the chips to a programmer to change their contents.
But easy to reprogram ROM does not change the fact that it is only one very small part of a microprocessor system.

Back in the day, if you wanted to make a new microprocessor system, you used a microprocessor development system if you had the money. Even when you had a new working system, a lot of changes were easer and faster to do when you reconnected the development system.

The idea of one microprocessor starting up a second microprocessor existed before 1978.
It is easy to get locked into one basic way that things work when their are other options.
For the Z80, a great system has ram for the first 128 bytes. All the Z80 restart instructions start from here. Just to be clear a restart instruction can be thought of as a one byte call or jump instruction. You also have NMI interrupt and mode IM 1 interrupts starting from this area of memory. Then Power up RESET starts a 0H, and this is where the "You need Rom starting at address OH" comes from.
There are many ways to do things. The TRS80 series computers had Rom at 0H, but included a jump to RAM for all those things that needed ram starting at 0H. It works but is slower and needs programs that work with the change. Some other systems did not go this far and you were stuck with ROM program.
One Z80 system I looked at was simple in that at power up ran NOP instructions until the PC climbed to memory area of ROM. Very simple hardware at a cost of a power up delay of running thousands of NOP Instructions(not really that much time).
So Many ways of getting job done.

So many options so far. But think ahead to a system that banks in more memory. To switch a bank memory you have many problems to work around but a lot to gain if you can switch memory banks.

So if you are ok to this point lets look at simple to start with.
 ali6x944 built a CPU clock circuit based on a 555 timer. Great chip to really study and simple. How useful is it here in long run?
What is gained & lost if you replace the CPU clock circuit with a timer output of an Arduino. To start you lose the pot to set speed, but this can be added back using a ADC. Replaced learning about 555 timer with writing real code that like 555 can be used many places.
Looking ahead, it is not a big step to let the Z80 set the speed of it's clock. Very handy for looking at software and hardware tests. At some point is Z80 program, with one OUT instruction so say "RUN @ ____ Hz"         
Over all this is not as simple, needs Arduino with program and less parts on breadboard. When you add Z80 Speed control, more parts on breadboard. Now the additional parts for this and idea can be used in many places. It's an IO Output latch that is used in a large number of places..

A IO Output latch with LEDs is nice to have for many reasons and could do both.  The nice thing about IO Output latch is can be tested on breadboard, Can be tested connected to Arduino. So when connected ot Z80 will work at any z80 clock speed if connected correctly.  As part of working system not as handy. The first PC's had this. When the PC started it ran some tests and LEDs let you know what worked and where in startup code the processor was at. Even better this could be added or removed from PC with out PC knowing it was there.

 So think of the ATmega32A as a microprocessor development system. Not a great development system, but not bad. If you look at a development system, For most you pull the CPU and plug in development system cable. You might or might not plug in CPU to end of  development system cable.
If you redraw the schematic, You would see this could be done.

 
No, it's not a clever idea, it might be a "smart idea" but for me the whole-presentation is a stupid idea that can only be motivated by the "cost", which I find it ridiculous since we all trash hundred dollars in electronic-crap (like arduino's shitty clones and those useless toys sold on ebay, including fake-chips sold for less than one USD), so why on the why we should promote the last "four dollars" of garbage from China?

Where is China in this?
It is an ATmega32A with a program.
« Last Edit: June 30, 2017, 10:55:29 pm by C »
 
The following users thanked this post: ali6x944

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: help! how to make a nsc800 computer?
« Reply #161 on: June 30, 2017, 05:20:32 pm »
Where is China in this?

The author promotes $4 (four dollars project, which is also in the title) devices bought from China at ridiculous price. It's also written in the BOM.
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #162 on: June 30, 2017, 06:49:19 pm »
Where is China in this?

The author promotes $4 (four dollars project, which is also in the title) devices bought from China at ridiculous price. It's also written in the BOM.


digikey Prices
ATMEGA32A-PU-ND
https://www.digikey.com/product-detail/en/microchip-technology/ATMEGA32A-PU/ATMEGA32A-PU-ND/1914592
1   @ $3.64000

Z80
https://www.digikey.com/products/en/integrated-circuits-ics/embedded-microprocessors/694?k=Z80&k=&pkeyword=Z80&pv1291=833&FV=ffe002b6%2Cffec7cc7%2C7e801b1&mnonly=0&ColumnSort=0&page=1&quantity=0&ptm=0&fid=0&pageSize=500
6Mhz, 8Mhz & 10Mhz $5.36
20Mhz $8.35

Static ram chip
64kx8 static ram. $2.65
128Kx8                  $3.16
512Kx8                 $5.48

74HC00  >$0.50

Min cost Three chip total $11.65 + shipping & Tax
Max cost Three chip total $17.47 + shipping & Tax

Of all that only ATMEGA32A, 74HC00 and a few parts are needed.
All/most are using a USB to serial adapter.
Do need an Arduino or Arduino programmer to get boot on ATMEGA32A first time.

So the basics is that it is too much to pay <$5 for parts that will/could save time getting Z80 running.

Or less than probably $20.00 for a working CP/M system with no china.

The design and software that exists is what makes this good.
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #163 on: July 01, 2017, 06:30:12 am »
Reference to Schematics

Grant's 7-chip Z80 computer
(only 6 chips if using a USB to TTL serial cable)
Schematic
http://searle.hostei.com/grant/z80/Z80SbcSchematic1.2.gif

Used overclocked MC68B50
Downloaded Data sheet from this page
http://www.datasheetspdf.com/datasheet/MC68B50.html

Grant's CP/M on breadboard
Schematic
http://searle.hostei.com/grant/cpm/CPMSchematic1.2.gif

Note that their is a file ROM.HEX that contains Basic & monitor program.
This version uses Z80 SIO not the MC68B50

So both can run Grant's Basic.

Just to be complete
Z80-MBC (Mobile Breadboard Computer)
Schematic
https://cdn.hackaday.io/files/19000812896000/A041116%20schematic.pdf

Here is what is added for storage
https://cdn.hackaday.io/files/19000812896000/A110417.pdf
Two 24LC1025 on this Schematic, Max is 4  Digikey price $3.06
[url]http://ww1.microchip.com/downloads/en/DeviceDoc/21941E.pdf/url]
The storage on this chip(1024kb 128K x 8) is about the same as a 5.25" 40 track SDSS disk
Note: This is not great, some would say bad, too small.   

So would be good to understand the basics.

There are a Huge number of ways to do Hardware & Software.

There are things I don like about all three of above.
 
If I was building one of these it would be a start that I would add to and change,

So ali6x944  some info.
SCN2661BC1N28 EPCI
I think that you will have to get very good a Z80 assembly language to have a chance of getting the SCN2661BC1N28 EPCI working. Must be connected properly and software has to work correctly. Not a good idea to try this with out having feedback from Z80 side. You need working serial port to debug this.

Z80 SIO
  If you want to study and learn about Z80, This is a good part. The Z80 supports vector interrupts. This chip supports using vectors.

MC68B50
  This chip was built to work with the 6800 line of processors, not Z80. If you want to learn about Z80, this is a fail. As noted above, Grant does not use it with his CP/M design.

Both of Grant's designs will fail if you change CPU Clock speed. The serial link will be at wrong baud rate. The fix takes more hardware.

Z80-MBC
  With the way the ATMEGA32A is connected to Z80, Serial link should just work at any CPU Clock speed. This design should let you have an easer time of adding new hardware. New software should also be easer.
  The Fail here is the small size of the CP.M Disks.
You could swap the 24LC1025's chips used while powered down.
You also have option of doing Upload & Download of disk contents to PC.

Here you have easy option of adding two more 24LC1025's. Quick read of datasheet should let you do hardware. Software side would require a proper copy & add changes in Z80 Assembly and code on the ATMEGA32A. Think you need to learn a bit for this.
I would guess you would have an easer time adding more disk drives to a working CP/M system then getting the SCN2661BC1N28 EPCI working.
 
For grant's you need a working eeprom programmer.

For Z80-MBC you need to program the ATMEGA32A the Bootloader one time. This step is the same as you would do with most ATMEGA chips not all ready programed.

You will need to wire up the one you want exactly. With help & questions larger memory should not be a big problem change.

Think of one of these as starting point for working z80 system. As you learn you could make careful changes to learn more or make it better. If it is working and you make a change you know what you did that broke it, and can undo the change.
I am assuming you what to learn both hardware & some software.

I may have missed something, ask questions.




 
The following users thanked this post: ali6x944

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: help! how to make a nsc800 computer?
« Reply #164 on: July 01, 2017, 10:42:54 am »
So the basics is that it is too much to pay <$5 for parts that will/could save time getting Z80 running.

Good attempt of being the last devil's lawyer ever, but you have completely missed the point: we MUST NOT promote people for the purchase of garbage from China as the author insists to do. Chinese cheap parts are usually fakes, which usually causes a lot of problems since the fake-hardware usually doesn't work as expected.

Also, the idea of using AVR8 is smart but not clever (especially in the educational's context) for a simple reason: it's slower than the CPU (especially if programmed with Arduino in mind), which requires people to strictly understand timing between the Z80's bus and AVR8's. Not so simple to understand, especially for beginners.
 

Offline Bruce Abbott

  • Frequent Contributor
  • **
  • Posts: 627
  • Country: nz
    • Bruce Abbott's R/C Models and Electronics
Re: help! how to make a nsc800 computer?
« Reply #165 on: July 01, 2017, 08:44:43 pm »
Back in the day, if you wanted to make a new microprocessor system, you used a microprocessor development system if you had the money.
I bought my first microprocessor 'development system' (HUG1802, similar to the COSMAC ELF) in 1980. It cost NZ$300 for the kit - a lot of money for a trainee technician whose annual salary was only $3700! I used this to learn about microcontrollers, machine code programming etc. I then made it into a programmer for 2708 EPROMs, and built a computer of my own design using an MC6800 CPU and MC6847 VDG. I developed the circuit and wrote all the code from scratch, using only the datasheets as a guide. IMO there is no better way to truly understand how computer systems work.         

If I had unlimited funds I might have started with a proper computer such as an Apple II or Commodore PET, but would I have learned as much? Probably not. Today, the stuff that most people use to learn on is so complex that they will never fully understand it. And that limits them to just being users of stuff that is designed by the few who do.

Quote
ali6x944 built a CPU clock circuit based on a 555 timer. Great chip to really study and simple. How useful is it here in long run?
What is gained & lost if you replace the CPU clock circuit with a timer output of an Arduino.
Yes the 555 is a great chip - I often use one when I need to quickly whip up a clock source on a breadboard.

What do you gain and lose replacing the 555 with an Arduino? You gain a more stable clock that is programmable. You lose the ability to whip one up from a few parts in your junk box. For the Arduino you need a PC loaded with the Arduino IDE, USB cable etc. If you want to change clock frequency you have to modify the program, compile and download it into the Arduino. So you need a very complex development environment to do what the 555 can do with a few resistors and capacitors.     

In the long run the Arduino would certainly technically be a better choice than a 555, and it can do so much more! But then why muck around with a Z80 at all, when you could just do everything on the Arduino?


Quote from: legacy
the idea of using AVR8 is smart but not clever (especially in the educational's context) for a simple reason: it's slower than the CPU (especially if programmed with Arduino in mind), which requires people to strictly understand timing between the Z80's bus and AVR8's. Not so simple to understand, especially for beginners.
I agree. It could be a good advanced project for someone who already understands the basics.

 
The following users thanked this post: ali6x944

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #166 on: July 02, 2017, 12:40:26 am »
Starting about 74 as tech on anything DC to 1Ghz. Most of computers were 16 bits or more. Some were the micro tube, many small vacuum tubes mounted to board, Some were transistor based. Can not think of a logic type I have not worked on back then. One system used TTL & ECL with pc boards bonded to copper plates. Those first flat packs were fun.
To give you idea of site size, Around that time had a circuit breaker fail, 660V 400A & problems with 100Kw no break power( think UPS with out limit).
First Z80 I helped design and build, the Z80 chip cost $250 at the time.
Did some Nova1200 programming. When I really got in to DEC PDP-11's, RCA let me use their $200,000 PDP-11 development system when not in use.

I bought my first microprocessor 'development system' (HUG1802, similar to the COSMAC ELF) in 1980. It cost NZ$300 for the kit - a lot of money for a trainee technician whose annual salary was only $3700! I used this to learn about microcontrollers, machine code programming etc.

Around that time i worked in research. They had full 1802 development system with dual 8" drives. Know a fab change to 1802 that added protection on pins stopped it working at high temp. Old fab version worked up in 150C+. Not my work thing.
My thing was help in design of 8085, z80 & 68000 systems & programming,
Also High temp testing. Tests where wrong solder was a fail.
I forget what temp we had a 8085 running at.
Had access to  development systems of 8080, 8085 & Z80
About the time the PCxt demo came I had a 68000 on one work desk. At times would load in $5000 of memory to get some compute work done, 
Have had a home computer from about 76. My last Z80 system had 6 disk drives. Biggest Z80 system I worked on had 18 Z80's in box connected to other boxes.
Not much need at home when I could stay late at work an play.
If you need to see a good/not bad Z80 design, you should look a TRS80 model 12. Really shows how to connect many SIO, PIO & DMA together. The whole system becomes an IO processor for the 68000 in the Model 6000.

So Short answer, when not fixing/maintaining something, had time and access to a lot of INFO. Schematics, theory of operation and data sheets.
If it stopped I had to fix it.
Best processor board I helped design was a 68k that could connect to two system buses with local expansion, Many on each bus.   


Quote from: legacy
the idea of using AVR8 is smart but not clever (especially in the educational's context) for a simple reason: it's slower than the CPU (especially if programmed with Arduino in mind), which requires people to strictly understand timing between the Z80's bus and AVR8's. Not so simple to understand, especially for beginners.
I agree. It could be a good advanced project for someone who already understands the basics.
Could be that you are looking at it the wrong way.
Z80 goes full bore until it receives a WAIT Input, Then stops DEAD. You have a static system at this point and all the time in the world unless you have something like dynamic ram in system. So at this point any speed is fast enough. The only critical spot is holding data on bus for a read and then getting off bus before Z80 uses it after read. And even this is just a case of controlling the Z80 Clock.
 
Here it is even easer, You are user not a developer, you are just connect wires and use.
So how hard is the timing to understand as a user. When Z80 Wait goes low you are in a memory or IO cycle. Address is valid, MREQ or IORQ valid. If Write then write data valid. If Read then waiting on read data to be valid. 
So the only critical spot in timing is getting WAIT asserted fast enough.

So what if you have a slow working system to start with.  The only catch here is the quality of software on the ATMEGA. And even here you have examples to follow on how to add.

It may not be what many want as a final system, but fine as long as there is no time critical data to process.
So I see you both backwards in your thinking, It's great for beginners. A lot easer to wire up then any of the examples you might create for a beginner.
With so few wires a lot less problems with a wire error. And if polished software existed, the software could assist in checking the wires.
 
The following users thanked this post: ali6x944

Offline Bruce Abbott

  • Frequent Contributor
  • **
  • Posts: 627
  • Country: nz
    • Bruce Abbott's R/C Models and Electronics
Re: help! how to make a nsc800 computer?
« Reply #167 on: July 02, 2017, 02:15:30 pm »
Here it is even easer, You are user not a developer, you are just connect wires and use.
That's the issue. Do you want to be a developer, or just an ignorant user?

Quote
So how hard is the timing to understand as a user. When Z80 Wait goes low you are in a memory or IO cycle. Address is valid, MREQ or IORQ valid. If Write then write data valid. If Read then waiting on read data to be valid. 
So the only critical spot in timing is getting WAIT asserted fast enough.
As a user I would hope that understanding the timing is not required - it should just work. But if it doesn't work then I need to figure out how it works so I can debug it. I would rather debug something I designed myself, because then I already know how it is supposed to work.

But how hard can it be? I took a look at the 4 chip Z80 project in your video. 28 files on the Hackaday page, where to start? Schematic, Z80 uBIOS source, Arduino source.  First thing to note is that this is for Z80 only, so a total non-starter for the NSC800.  Circuit looks about as complex as a standard Z80/decoder/ROM/RAM/SIO setup. Arduino source is 2586 lines of code - this may take a while to digest...

I was interested in how the Z80 interacts with the AVR when doing I/O. Turns out it's pretty simple - when the Z80 executes an IN or OUT instruction /IORQ goes low, which sets a F/F that asserts /WAIT. The Z80 will then extend the current bus cycle until /WAIT is released. The AVR is continuously polling the /WAIT line, so it knows an I/O request is in progress. It looks at /RD and /WR to see whether it needs to send or receive data on the Z80 data bus. After reading or writing the bus it has to finish the cycle, but it can't just reset the F/F because the Z80 will start a new cycle in less time than it can get off the bus. So it asserts /BUSRQ to make the Z80 give it control of the bus, waits 2us for the Z80 to finish the current cycle, gets off the bus, resets the F/F to release /WAIT, and finally releases /BUSRQ so the Z80 can take over again.

Getting /WAIT to assert fast enough is taken care of by the F/F, after that the AVR can take its time responding to I/O requests. Using /BUSRQ to avoid critical timing issues at the end of the cycle is quite clever. 
 
 
The following users thanked this post: ali6x944

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #168 on: July 02, 2017, 05:32:25 pm »
Here it is even easer, You are user not a developer, you are just connect wires and use.
That's the issue. Do you want to be a developer, or just an ignorant user?
.
Is it a How you look at Problem again?
When I read that, You are saying you have built all the test equipment that you use! If true then great, but double standards are bad.

So you have a black box, But here you can use it first and open later if you want. 
Like any test equipment you have to connect it properly.
Tho only reason to first open box is if the AVR program is bad. But you now have time to get Z80 working and play with AVR later if you want.

So tricky AVR program gets Z80 running.
Unlike Grant's design, all IO keeps working when you slow the clock. 

There are a lot of what could be called fails here. But you have to keep in mind what you do in other places.  Do you really expect your 10Mhz scope to give you a display of a 500Mhz Scope? 
Does this AVR keep you from changing the Z80 to be better?
The big problem with most starts like this is the down to a cost or build with few chips.
Build Grant's simple 9 chip then break it and hope you get it working again for Grant's CP/m path. That is not good for beginners.
I See Grant's design as "IT Works" or "IT's Broke".
When "IT Works" it really needs more to pay and  learn more hardware.

So Bruce, What would you gain if you were using this to build your Z80?

With your knowledge, I would think that you could make even better for the beginners.   
Look at ali6x944 as a beginner.
Why should a beginner need to buy a eeprom programmer these days. He listed $50 for real & $25 for clone. Yes it nice to have, but these days how often do you have to use it.
Here it could be just connect EEPROM to Z80 and run a Z80 program to program the EEPROM.
Bad Z80 program in EEPROM, run Z80 program again to change. No chip pulls where there could be problems.

Does this keep a beginner from learning or does it make it easer to learn.
Could be better, think that is always the case, but not bad.

I think part of you finding a large number of files (28) is that some are small steps to add to starting point. The bad here is that additions are on AVR side.

Where to start, On hackaday I read
1. Program Atmega32A with Arduino bootloader.
     Same step needed for most Atmega's not proprogrammed.
    The Arduino IDE has a Arduino ISP program, Videos on youtube.
     
2. Use Arduino IDE to program S221116_R110517_Z80.ino

Don's think I need to say more 
 
So Bruce, how much is the cost to you to make this even better for the beginners while helping you make your z80 BETTER?

And
First thing to note is that this is for Z80 only, so a total non-starter for the NSC800. 
True but no eeprom programmer needed so what is saved can buy a Z80
And the NSC800 can be a small step in the future after learning the basics.

Quote
Circuit looks about as complex as a standard Z80/decoder/ROM/RAM/SIO setup.
I would guess most will find it easer to wire. This is very true if you think ahead and put AVR on one bread board and then have jumpers to Z80 chip.
 
The following users thanked this post: ali6x944

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: help! how to make a nsc800 computer?
« Reply #169 on: July 02, 2017, 06:06:30 pm »
Why should a beginner need to buy a eeprom programmer these days. He listed $50 for real & $25 for clone. Yes it nice to have, but these days how often do you have to use it.

Here I paid 60 euro for a second hand UV-eraser, whose lamp was planned to be used for medical purposes (so yes, it's an hack), and 290 euro for a brand-new professional rom-programmer. Of course I got a super discount, DataMan happens to be much more expensive, and 290 euro is a lot of money, but if you attend public rooms or buildings where gambling games are played., well ... it happens that slot-machines still use UV-prom, so it was a good idea as working-student and it helped to pay my university taxes, and even nine years later since then my prom-programmer is still useful since it also supports serial flash chips.

It's also fine if I want to reprogram the SPI-flash chip I have on my TL703 router, aiming for porting XINU to a smaller platform than the one was officially supported: a big blue router with long antennas on the top, definitively too big, as the TL703 looks as big as a pack of ten cigarette  :o :o :o
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #170 on: July 02, 2017, 06:26:33 pm »
Why should a beginner need to buy a eeprom programmer these days. He listed $50 for real & $25 for clone. Yes it nice to have, but these days how often do you have to use it.

Here I paid 60 euro for a second hand UV-eraser, whose lamp was planned to be used for medical purposes (so yes, it's an hack), and 290 euro for a brand-new professional rom-programmer. Of course I got a super discount, DataMan happens to be much more expensive, and 290 euro is a lot of money, but if you attend public rooms or buildings where gambling games are played., well ... it happens that slot-machines still use UV-prom, so it was a good idea as working-student and it helped to pay my university taxes, and even nine years later since then my prom-programmer is still useful since it also supports serial flash chips.

So you have a need and have found more uses for it.
That does not mean everyone has a need for one.
It also does not mean you have to create a project so that you have to have a programmer when there are other choices. 

AND the big thing, Why force a beginner just starting out to have to buy a programmer when you know there are other choices?
And in the future when there may be a need, the one the beginner bought will not do the job. 

You complain about China junk. Yet forget that a one time use use of a programmer could be called JUNK. You had a job/work that paid for it, a beginner may not.
 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: help! how to make a nsc800 computer?
« Reply #171 on: July 02, 2017, 07:32:48 pm »
It also does not mean you have to create a project so that you have to have a programmer when there are other choices. 

Here you are going a bit ridiculous: man, if you want to deal with old technology, you have to deal with old technology, otherwise get a modern AVR8 chip, load arduino on it, and be happy.

why force a beginner just starting out to have to buy a programmer when you know there are other choices?

I am not forcing no-one to do anything, and speaking about old-technology MPU, there are a lot of other choices, e.g. HC11 doesn't requires a prom programmer since the chip comes with a serial bootstrap mode which can be used to program external NV-RAM. You might use a simple HC11 board to program a NVRAM (static ram with a battery) to be used on Z80.

You complain about China junk. Yet forget that a one time use use of a programmer could be called JUNK. You had a job/work that paid for it, a beginner may not.

This makes no sense.
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #172 on: July 02, 2017, 08:37:32 pm »
It also does not mean you have to create a project so that you have to have a programmer when there are other choices. 

Here you are going a bit ridiculous: man, if you want to deal with old technology, you have to deal with old technology, otherwise get a modern AVR8 chip, load arduino on it, and be happy.
I would say it's you that is being a ridiculous: man.
If you do not like the Z80 that is fine.

why force a beginner just starting out to have to buy a programmer when you know there are other choices?

I am not forcing no-one to do anything, and speaking about old-technology MPU, there are a lot of other choices, e.g. HC11 doesn't requires a prom programmer since the chip comes with a serial bootstrap mode which can be used to program external NV-RAM. You might use a simple HC11 board to program a NVRAM (static ram with a battery) to be used on Z80.
And here we have an Atmega32A

That  ali6x944  already has the hardware needed and only needs to wire and load a program on existing arduino.

Some of my old technology, an 8085 was programming EEPROMS back in 1980's and this is even easer with todays chips.
 
 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: help! how to make a nsc800 computer?
« Reply #173 on: July 02, 2017, 09:04:00 pm »
I would say it's you that is being a ridiculous: man.
If you do not like the Z80 that is fine.

I wonder ... who has ever said I don't like Z80? I am not interested but it is and was not the point.  Don't be (more) ridiculous.
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: help! how to make a nsc800 computer?
« Reply #174 on: July 02, 2017, 10:58:50 pm »
Atmega32A as virtual IO for Z80.
I had a thought that some reading about using an Atmega32A with a Z80 like being talked about here might not get the big picture.

In the past you might have had a TRS80 (a Z80) computer for example. Today you can find some programs that will run the old TRS80 programs on a PC. The PC program creates a virtual TRS80 in the process.
Here instead of creating the whole computer, you have a Z80 CPU & RAM in hardware. If you have this, then do not need a virtual Z80 chip or RAM chip.
The remaining part of computer is then the IO.
For a Z80 to use IO, it needs a program to interface with the hardware and the hardware.
Some IO devices need some simple software to function. For other IO devices the software can get very complicated.
The AVR is creating virtual hardware for the Z80 to use.
The AVR can even run a part of the software needed for a device to function, making the Z80 side software very easy.
The Result is a working system with the Z80 side of device software easer to understand.
You have a system that can run software with some hardware supplied by AVR.
In the future,
You have a choice of adding more IO hardware to the AVR side or the Z80 side.
When adding you can do small steps and test that each step works as you planned.

Some might like to use BASIC on the Z80 to do some tests on new hardware. You can do that here. The AVR controls the Z80 Clock of the system, so you should be able to do everything at a slow Z80 Clock and still get the help provided by the AVR & PC.

Some here may not think it, but being able to run CP/M is a big deal. This can give you access to later Microsoft basic and other basics. You can use and learn PASCAL via Borland's TurboPascal.
Then there are the ASSEMBLERS, that run on Z80. If you find old Z80 code this can make it a lot easer as you do not have to translate source for the differences an assembler might require. 

You could load Z80pack on your PC if you wanted to, Creates a Virtual Z80 CP/M system. You could then run CP/M programs on your PC. If you are writing software that works with hardware, You would need to move code to real Z80 to test with needed hardware.
 
 AS this is ali6x944  thread
The AVR will not help getting your NSC800 running with out changing things. I would list this as a fail at this time.

There are things you can do while waiting for your Z80 to arrive.
There are somethings you can do while waiting for Atmega32A to arrive if you do not have one.

The first step with the Atmega32A is programming it the first time. This step is the same as you would do with other AVR chips. You could use what you learn here for other projects that use an AVR.
If you have other AVR chips you could do this step with other AVR Chips. In this case you are programming Arduino bootloader so you can use the Arduino IDE to create programs. This same step lets you program an AVR with programs that do not use the Arduino IDE.

From what I know, I think using the Atmega32A with Z80, you will have a smaller chance at a fail. At the same time, little prevents you from learning/building a fantastic Z80 in small steps.

With a fail you can learn something at times. But failing just to be failing is no fun. It is often the very simple thing that can cause a fail also.

Just so you know how bad a fail can be. I failed a test in the 1970's. The test was on a system that was housed in 12  6' tall racks. I should have found the problem in less than 10 minutes.  I found the switch set in wrong position after 30 minutes. That switch should never be changed, was not easy to changed. Until that time had the fastest time to complete each test in the class. I learned first check the simple stuff.

So the big thing is pick a path an stick with it.
Break a big project down in to small simple steps that you can test. After a time you have that big project.
Here one step is Wiring, it has to be perfect You do not need a scope to check that the wiring is perfect.
You may need a scope after you know that the wiring is perfect.

So pick a path and stick to it.
If you are waiting on parts, there are many things that you can learn while waiting that will help in the future. All you have to do is ask.
 
The following users thanked this post: ali6x944


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf