The Dan ][ SD card disk controller

483 posts / 0 new
Last post
Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I just got done updating all

I just got done updating all of my Dan ][ cards with the most recent firmware and Arduino code.  Some of them still had the original code on them.  I modified one with R9 to 47 Ohms and R15 to 100 Ohms and tested it with a SD slot extender and that works so my next task is to modify a bunch of cards to handle the extenders as I bought a bunch of them.

 

I also need to play a little with the Wiznet W5500 modules as I have several of them.

 

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
softwarejanitor wrote:So now
softwarejanitor wrote:

So now for a different Dan ][ related topic...

 

Software/disk images.  I've been using the same 9 32MB ProDOS volumes for every Micro SD card I've made up.  

 

 

BLKDEV01.PO    - Total Replay v5.0-alpha.4.po

BLKDEV02.PO    - Total Replay II Instant Replay.po

BLKDEV03.PO   &nb

I found assembler source for those system files on the 32MB ProDOS images.  Armed with that I should be able to look at the disassembly I did and see what I did wrong.  I should also be able to graft in my Dan ][ splash page.  I'm thinking a 32MB ProDOS image containing all of the useful Dan ][ utilities that make sense plus maybe a few others like the A2VGA utilities, maybe some other useful ProDOS software.  Something other than just games which is mostly what most of the disk images you can find online are.  Well, a few other utilities too, but pretty game heavy.  And a lot of gaps as far as software that is included.

 

I'm trying to come up with kind of an "ultimate" SD card image with most of the useful stuff people would want on there.

Offline
Last seen: 14 hours 50 min ago
Joined: Mar 12 2023 - 16:49
Posts: 20
Get Z80 card working from Dan][ ProDos

I have a problem which I could do with an answer for. I need an image that boots a Z80 hard card from the Dan][.

So far I have failed miserably in getting the Z80 to work except from my standard floppy running on DOS floppy disk.

That would be a great item to have on tap in the Dan][.

regards Crusty.

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I believe that CP/M would

I believe that CP/M would need a driver written for it to work with a ProDOS block device like the Dan ][.  I don't know if anyone has done that yet.

Offline
Last seen: 7 hours 9 min ago
Joined: Jun 29 2018 - 16:55
Posts: 583
Right,  even the Yellowstone

Right,  even the Yellowstone disk controller has to be in its "Vanilla Disk II mode" for CP/M to boot. Would be nice, but probably not simple. 

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
skate323k137 wrote:Right, 
skate323k137 wrote:

Right,  even the Yellowstone disk controller has to be in its "Vanilla Disk II mode" for CP/M to boot. Would be nice, but probably not simple. 

Definitely not.  It would probably  need to be tackled by someone who was an expert on CP/M, most likely Z80 assembler...  AND the Apple II specifics of CP/M, since it is an add-in which is more complex I would imagine than a machine purpose built to run it.

 

But, it is definitely possible.  There were hard drive drivers for CP/M for various hard drive offerings back in the day.  Starting with the source code for one of those if it were available might be the way to go.  Starting from a disassembly would be a less nice option but probably better than a blank slate.

 

 

Offline
Last seen: 14 hours 50 min ago
Joined: Mar 12 2023 - 16:49
Posts: 20
softwarejanitor wrote
softwarejanitor wrote:
skate323k137 wrote:

Right,  even the Yellowstone disk controller has to be in its "Vanilla Disk II mode" for CP/M to boot. Would be nice, but probably not simple. 

Definitely not.  It would probably  need to be tackled by someone who was an expert on CP/M, most likely Z80 assembler...  AND the Apple II specifics of CP/

I somehow think that the information might be here at  this link but I have never delved deep into it.

Offline
Last seen: 7 hours 9 min ago
Joined: Jun 29 2018 - 16:55
Posts: 583
Well I've fixed many apple

Well I've fixed many apple IIs, used CP/M on Apple II and RC2014, and built a massive Z80 RC2014 Pro, but my machine code skills are limited. I might get bored and read though :)

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Crusty wrote:softwarejanitor
Crusty wrote:
softwarejanitor wrote:
skate323k137 wrote:

Right,  even the Yellowstone disk controller has to be in its "Vanilla Disk II mode" for CP/M to boot. Would be nice, but probably not simple. 

Definitely not.  It would probably  need to be tackled by someone who was an expert on CP/M, most likely Z80 a

 

I think that will work... IF you have that particular ALS made Z80 card and use the version of CP/M they are talking about.  I'm not sure it will work with a Microsoft Z80 Softcard or a PCPI Applicard or clones/compatibles/emulators of those cards (like the A2VGA card with Z80 emulation loaded).  I could be wrong though, and possibly someone could adapt what ALS did to work with other cards if it doesn't work directly.

 

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
skate323k137 wrote:Well I've
skate323k137 wrote:

Well I've fixed many apple IIs, used CP/M on Apple II and RC2014, and built a massive Z80 RC2014 Pro, but my machine code skills are limited. I might get bored and read though :)

 

I've got assembly experience on 6502 and several others (68k, PDP-11, VAX, x86, etc), but not really Z80.  I've also not really done anything with CP/M than play with it in the past 30 years and really not a huge about back in the day, I was an Apple II guy who went to UNIX and Macs in the late 1980s and then Linux starting in 1993.  And returned to tinker with Apple IIs a few years ago.

 

There should be some good books availabe in PDF format related to CP/M and Z80 assembler though.

 

 

Offline
Last seen: 11 hours 48 min ago
Joined: Jun 12 2022 - 23:35
Posts: 109
I have a Z80 computer I built

I have a Z80 computer I built which I adapter an Z80 SD card driver for.   You might be able to use that.

 

https://github.com/profdc9/Z80SBC

 

Look under the ROMCPM directory.

 

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
profdc9 wrote:I have a Z80
profdc9 wrote:

I have a Z80 computer I built which I adapter an Z80 SD card driver for.   You might be able to use that.

 

https://github.com/profdc9/Z80SBC

 

Look under the ROMCPM directory.

 

That's probably a pretty good place to start since it uses an 82C55 and Micro SD like the Dan ][.  Maybe someone can paste something together between that and the ALS information provided in a previous post.  Probably would still take some hammering on the code here and there to make it all fit.

 

 

BusError's picture
Offline
Last seen: 1 day 4 hours ago
Joined: Jul 9 2023 - 06:39
Posts: 63
After a few months where I

After a few months where I got sidetracked writing my own //e emulator, I've now reached the point where I have restored the Dan II emulated support so I can flash a 'virtual' card using @Macfly latest tree! Thanks to him for merging my atmega644 branch, it works perfectly as well with his latest additions ...

 

Offline
Last seen: 3 days 4 hours ago
Joined: Feb 9 2024 - 13:42
Posts: 24
Another build of Dan ][

I was going to buy one of these but decided I would challenge myself and build one or maybe two. I must say it was harder than I thought but it I learned a lot!! Lessons learned:

  • Read and understand. I figurered out the flashing without much problems but fuses? We don't need no stinkin' fuses! Yeah... you really need those set.
  • Surface mount is not for me. I did it but I think I need a smaller tipped iron and younger eyes.
  • Need to learn ProDos. I am a II+ baby and by the time ProDos came out, I was doing PC.
(yeah, I realize that A3DAN2FW is not going to work, just looking for slot fillers, I was excited, okay?)

I had never done PCB fab before. I used JLCPCB. ThorstenBr's Github had the Gerbers zipped and ready to go so that was conveinent. I didn't realize my EPROMS wouldn't be blank so I needed to get them UV'd. I bought that cheap, "Big Moon" eraser. After several 60 min. sessions, they finally let go of their code. My unit was flickering a lot so I tried reversing the plug and that helped. I opted to get a MiniPro II+ but instead what showed up was the newer model, the T48. So I hoped that wouldn't be a problem. EPROM flashing was not an issue other that my EPROM didn't have an exact match (NMC27CP128Q-250) wasn't listed in the software. Chose the closest generic and was okay. For the ATMega328P (I have never done Arduino stuff), I loaded the hex file and flashed and it all seemed to go okay. But alas, the T48 GUI does not have a clear (to me) way to set the fuses, so at the time, I didn't worry about it. Plugged in the board and booted. First, no LEDs, I'm embarassed to say I figured the square hole was positive. Got that sorted but then was getting odd results. The SD1 and SD2 would alternate for about a minute and finally would fall through to slot 6 if escaped was pressed or sometimes, in a blue moon would show the menu but usually not. If it did get to the menu, the keyboard did not do anything. I figured I did a bad job on the SD slots. Little did I know, at the time, it was b/c I didn't set the fuse.cfg. Remember, I used the GUI. I got a lot closer when I finally use Arduino UNO I have had lying around for a long time. Copied the ATMega from the stock Arduino and then did AVRDUDESS to set the hex and fuses. I got a verify error but went ahead anyway. And alas, some success! But my menus didn't show anything. I learned from reading theses posts if the light alternates somewhat slowly between SD1 and 2 then you probably have a bad solder job on your SD cards. I touched up those tiny leads a few times and finally got a quick blink on SD1. A few more times on SD2 and I got that one too. I nearly jumped for joy when Instant Replay finally popped up. So after all that I thought let me try the built in firmware upgrade to see if I could get a clean firmware installed. No joy. Waiting for sync/sync error or something. I wanted EVERYTHING to work. I thought maybe it was that verify error lingering. I knew there was a command line util for the MiniPro but after doing brew install on the Mac, I was getting a library not found. So instead I built the tool on a RPI and erased, re-flashed and fuse'd the ATMega and that went perfectly. Inspite of minipro saying the T48 is experimental. Put it back on the board and did the built in firmware update. Worked perfectly. At this point I am happy. WizNet? maybe.  I have enough parts to build a 2nd board but get a more appropriate soldering iron before I try again. I see by the previous post there is even a newer firmware to had. Huzzah! Thanks profcd9, MacFly, and to everyone here for this cool board!

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
dbrownlee wrote:I was going
dbrownlee wrote:

I was going to buy one of these but decided I would challenge myself and build one or maybe two. I must say it was harder than I thought but it I learned a lot!! Lessons learned:

  • Read and understand. I figurered out the flashing without much problems but fuses? We don't need no stinkin' fuses! Yeah... you really need those set.
  • Surface mount is not for me. I did it but I thin

 

I haven't done much with the T48 that I have.  I also have an original TL866CS and a TL866-II+ I bought later.  Those both work and I keep both because either one will do a few chips the other won't.  The TL866CS won't do for example, ATF22V10B (although it will do Lattice GAL22V10 and ATF16V8 no problem) but it will do ST M2716 that the TL866-II+ won't do because it can't do the 21V programming voltage needed.  Oh well.  I've heard the T48 can do a wider variety of chips than either of the older versions, but I've not been able to verify that yet.

I'm glad to hear of your success with the T48!  I will try to make a point in using mine next time I need to program some chips just so I can say it works and what all it can do compared to the other two programmers.

I had never throught of trying to build the minipro utility on a RPi, but that's pretty brilliant.  For my T48 I also had no joy with brew on the Macbook I have -  the version in brew is too old for T48 support.  I ended up downloading the Git repo as a .zip and then building it by hand on MacOS.  I think I may have to try it on an RPi though, just for fun.

I have that same "Big Moon" UV eraser.  I bought mine from either Aliexpress or maybe bangood or one of those other Chinese sites back around 2015 or 2016.  Mine has always worked fine, 30 minutes has generally been adequate to erase most EPROMs.

For what it's worth, I would recommend to get an actual soldering station instead of just an iron.  I have a YiHUA 939D+ that I've been quite happy with.  I've built 16 working Dan ][ cards with it and literally dozens and dozens of other cards.  It is reasonable priced and works pretty well, with an adjustable temp, LED display and it heats up fast and stays hot.  Small irons, not so much.  The soldering stations also usually come with several changeable tips which is nice.

https://www.amazon.com/YIHUA-Professional-Digital-Soldering-Station/dp/B07RVMZNYR

 

 

Although I might if I was doing it today, order this instead because it includes a hot air desoldering station as well...

 

https://www.amazon.com/gp/aw/d/B0BXN5NXFQ

 

 

 

 

 

 

Offline
Last seen: 3 days 4 hours ago
Joined: Feb 9 2024 - 13:42
Posts: 24
"For what it's worth, I would

"For what it's worth, I would recommend to get an actual soldering station"

 

Agree. I recently bought a soldering/desoldering station. Love the desoldering side. Recently replaced a bunch of IIe RAM. But the soldering side, the iron is too big for precision work. Even if I replace the tip. In time, though, I will get one. Thanks for the info and I have been following your posts for the Dan II and elsewhere. Always helpful info!

BusError's picture
Offline
Last seen: 1 day 4 hours ago
Joined: Jul 9 2023 - 06:39
Posts: 63
I use a T48 as well, software

I use a T48 as well, software runs in Wine in linux. Looks meh but works. I used it also with various adapters, like TQFP and PLCC as you can find adapters fairly cheaply on eBay and such.. Worked pretty well so far! I even 'rescued' some atmega644 I had 'fried' but using the high voltage programing mode of it to reset the FUSES...

 

Offline
Last seen: 3 weeks 6 days ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
BusError wrote:I use a T48 as
BusError wrote:

I use a T48 as well, software runs in Wine in linux. Looks meh but works. I used it also with various adapters, like TQFP and PLCC as you can find adapters fairly cheaply on eBay and such.. Worked pretty well so far! I even 'rescued' some atmega644 I had 'fried' but using the high voltage programing mode of it to reset the FUSES...

 

 

I ran an old version of the Windows software in Wine under Linux to see if it would start up a long time ago, probably like 2016-ish.  It seemed to run but I never tried to burn anything with it.  The Open Source minipro utility works so well I really haven't had any curiousity even to try under Wine again.  I might have with the T48 if the Open Source minipro utility hadn't got recent support for it.  I had lost my TL-866-II+ and was trying to buy another one - they sent me a T48 despite claiming it would be a TL866-II+.  I ended up getting a TL866-II+ from a friend, and then I found my original one...  So now I've got two in addition to the original TL866CS and the T48...  So I am well equipped with programmers right now.

 

 

Offline
Last seen: 3 days 4 hours ago
Joined: Feb 9 2024 - 13:42
Posts: 24
Never thought I would see this day

Never thought I would see this day. My Apple IIe/DAN II via Wiznet via TELNET65 talking to my SIMH VAX.

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
Weird problem just appeared

I've been running my apple III with the DanII controller card and the wiznet module (and all of Macfly's other wiz-bang features) for several months. It has been as stable as one can expect from 40 year old hardware, until yesterday. At power on or control-reset reboot it no longer sees volumes on the second SD card (although sometimes it will see the first few, then skip all the others.) Both SD cards have 16 volumes. An external card reader verifies there is nothing wrong with the SD2 card. After some experimentation, I've discovered that everything works if I disconnect the wiznet module. I've tried 2 different wiznet modules and 2 different atmega328 chips. I was running the 3.3.3 version of the arduino code so I reprogrammed another atmega328 with the 3.4.1 version. Everything is good, until the wiznet module is plugged in. The wiznet module does initialize correctly and I see the IP address on the initial volume selector screen. What else can I try?

Offline
Last seen: 11 hours 48 min ago
Joined: Jun 12 2022 - 23:35
Posts: 109
Do you have a shorter 10 pin
Do you have a shorter 10 pin ribbon cable, or a different cable to try?  Maybe the capacitance of the cable is a problem.
 
It may also be possible to modify the code to slow down the SPI and see if that helps.  Change FCLK_FAST() in mmc_avr_spi.c to
 
#define FCLK_FAST() do { SPCR |= _BV(SPR0);  SPCR &= ~(_BV(SPR1)); } while (0)   
 
 
 
retro-tinker wrote:

I've been running my apple III with the DanII controller card and the wiznet module (and all of Macfly's other wiz-bang features) for several months. It has been as stable as one can expect from 40 year old hardware, until yesterday. At power on or control-reset reboot it no longer sees volumes on the second SD card (although sometimes it will see the first few, then skip all the others.) Both

 

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
Troubleshooting

Thanks for the hints. I'm not sure why the cable would have suddenly changed capacitance, but I've already tried different active compontents on both ends of the cable so it's worth a shot. As soon as my new crimper arrives :-)

I can try the atmega code mod, but I have had limited success getting my builds to work reliably - I just use the "Apple2Arduino.ino.328p.with_bootloader.hex" file from the github distribution. (I suspect this is because I don't know how to make it pick up the correct bootloader using the IDE under windows, but I will experiment.)

MacFly's picture
Online
Last seen: 42 min 43 sec ago
Joined: Nov 7 2019 - 13:49
Posts: 452
SD card vs slot
retro-tinker wrote:

I've tried 2 different wiznet modules and 2 different atmega328 chips.

Does it depend on the SD card or on the SD slot? What happens when you swap the SD cards in slots 1+2: does the issue stick with the card or with the SD slot?

 

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
Negative progress

MacFly, thanks for the suggestion. I had forgotten that you can set Drive 1 to any volume since I have always used SD1/Vol00. I had previously tried booting without an SD card in slot 2 (with wiznet connected) and that seemed to work. I also tried a different SD card in slot 2, and I tried reformatting and rewriting the original card in SD2. None of these experiments worked with either wiznet module connected.

Per the suggestion above, I also tried a different cable to the wiznet module - but no success there either.

The frustrating part of all this is that the failure is very intermittent. Most of the time it fails to work correctly, but once in a while everything looks good - until I reboot or power cycle. At least it was intermittent up until now.

Unfortunately something now has gone horribly wrong. The computer does not find either of my DanII cards in any slot (although the SD1/2 lights blink at boot and the power LED comes on.) With the modified boot rom and caps-lock off it just drops into the monitor and beeps. With caps-lock on and a DanII boot disk in D1, it sometimes says No Card Found, sometimes it just beeps and the screen is blank. Booting an old Sys Utilities disk works perfectly. To further obsfucate things, I have a Titan 3+2 card in slot 4 set up as a 128K ramdisk. Sys Utils has no problem seeing that board and copying files to it.

As an old boss of mine used to say "sometimes it takes a 'scope and a brain." At least I have a 'scope.

I guess I will also pull the 28c256 EPROM and see if the code is intact.

 

 

BusError's picture
Offline
Last seen: 1 day 4 hours ago
Joined: Jul 9 2023 - 06:39
Posts: 63
That sounds like you are

That sounds like you are having a developping power supply issue! All of the symptoms you describe could match. Have you recapped that PSU? The wiznet problem as mentioned could be cable-length related, but if the PSU is a little bit on the light side, the wiznet module (well, ANY ethernet module) can suck quite a bit of power to link up, so that might throw it over the edge so to speak. The fact the problem seems to be getting worse is a bit of a telltale...

 

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
Sounds like

Yes, I did re-cap the supply about 7 months ago with a kit of parts from JCM. When I get back to this project I'm going to check the supply voltages first. Doubt the wiznet is tripping up the supply though - booting from a mechanical floppy is probably a bigger load. Also, it doesn't find the DanII cards even without the wiznet connected.

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
Power supply

Hard to get the o'scope over near the apple iii, but my dmm measures the +5v supply at 4.69 w/o the DanII card plugged in and 4.63 with it plugged in. (4.61 with the wiznet module attached.) +12v measures 11.76. All these were measured at the slot edge connectors. Seems a bit low, maybe even out of spec.

I'm not sure the power supply schematic I have is completely representative of the actual hardware. Notes on the page say "Rev A" and "initial release". It is dated 12/82 - but I bought my machine in April of 1982.

MacFly's picture
Online
Last seen: 42 min 43 sec ago
Joined: Nov 7 2019 - 13:49
Posts: 452
A/// PSU

Also check the negative rails, especially the -5V.

It's a simple switch mode PSU - and like many from those days, it only has a single feedback channel for active regulation.

It uses a classic 7905 voltage regulator to generate the -5V. That rail is used as a reference for the +5V rail. There is a resistor divider between the -5V and +5V rails. The PSU tries to keep this divider in balance. So if the 7905 was weak, for example, it would directly affect the +5V rail, since the PSU primary side would actively adjust to keep the balance. That's the single feedback loop this PSU has.

Apparently there is also a trimmer (R21), so you can adjust the +5V rail. It affects the resistor divider between the +/-5V rails. But before you messed with the trimmer (carefully!), you should be sure there is no other problem.

Also measure the output voltages on the connector on the PSU side. Not that there was just some connection issue.

The +/-12V rails are not accurately regulated by the PSU. Those voltages will slightly vary with the relation of the load on the +5V and +/-12V rails. That is normal. Many PSU back in the day were designed like this.

 

And the usual disclaimer: be careful when messing with PSUs. It also has capacitors charged with mains voltage which could bite even when mains was switched off.

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
PSU

I'll let you know when I get the bench cleared off enough to tear the A/// apart (again. sigh.) Like I said, I'm not sure the PSU schematic and the hardware match. I don't recall seeing a trim pot in there anywhere when I re-capped it.

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
Follow up

The -12v supply measures -12.57v; the -5v supply measures -5.40v.

Once I got inside, I found the actual power supply model number as Astec AA11190. A quick search lead me to this document:

https://bitsavers.org/pdf/apple/power_supply/Astec_Power_Supplies_Aug82.pdf

which has schematics, layout diagrams and parts lists for many Astec products used in Apple products. Everything in here matches my PSU much better than the schematic I had previously been referencing. As I suspected, there is no trim pot or 7905 voltge regulator. I do see it has built-in load resistors on both the -5 and -12v supply rails.

Now I need to figure out how it monitors and regulates the output voltages. There is a 3-terminal precision voltage reference (TL431CP in a TO-92 package) and a bunch of other components in some kind of feedback circuit on the 5v rail. The Apple /// level 2 service reference manual has a good discussion of the theory of operation; I'm going to start measuring some resistors.

retro-tinker's picture
Offline
Last seen: 4 hours 39 min ago
Joined: Jun 7 2023 - 15:41
Posts: 68
Follow up 2

Let me apologize for hijacking/cluttering this thread. My problem had little to do with the DanII controller card, other than having it load down the Apple/// PSU more than was tolerable in my machine. I did learn a bit about the PSU however, and was able to make a small modification that boosted the 5V rail a few hundred millivolts. I now read 5.07v at the CPU and 4.80v (all the way out) at the Wiznet connector. System is booting and running reliably again.

Offline
Last seen: 7 hours 9 min ago
Joined: Jun 29 2018 - 16:55
Posts: 583
retro-tinker wrote:Let me
retro-tinker wrote:

Let me apologize for hijacking/cluttering this thread. My problem had little to do with the DanII controller card, other than having it load down the Apple/// PSU more than was tolerable in my machine. I did learn a bit about the PSU however, and was able to make a small modification that boosted the 5V rail a few hundred millivolts. I now read 5.07v at the CPU and 4.80v (all the way out) at th

At the end of the day I am just glad you are sorted. Low 5v (or God forbid 3.3 on newer devices) can cause all sorts of weird stuff. 

 

I wouldn't apologize for confirming you fixed it, it's far worse when people disappear or don't follow advice IMHO. 

 

Cheers,

Alex

Pages

Log in or register to post comments