Please support the defense of Ukraine.
Direct or via Unclutter App
No Ads.
No Trackers.
No Social Media.
All Content Locally Hosted.
Built on Free Software.
We have complied with zero government requests for information.
~ Est. 1999 ~
A pillar of corporate stability since the second millenium.
© 1999-2999 Tom Owad
Your Dan ][ card may do that but mine doesn't. I just tried my card again without a Micro-SD card in it. It didn't continue the boot routine it just dropped into the monitor with the exact same thing on the screen that I posted earlier. CVT said to press the ESC key when booting the computer and it would ignore the Dan ][ card. That didn't work either. So, at least for me, the easiest thing to do is what I found and posted about after posting the comment about the problem. I have Apple II Desktop installed on the Micro-SD as BLKDEV01.PO. From there I just use the mouse I have hooked up to the IIe to scroll to Startup in the menu and select Slot 6. The computer then boots the 5.25 drive.
It may take a few seconds more on my part to get the program in the 5.25 to run but I'm perfectly happy with it. As I commented above at least this way I can run one of the 32mb images on the card or something in the 5.25 drives.
I may perhaps be stating the obvious or irrlelevant, but have you updated the card itself since obtaining it?
Yes, hitting ESC to skip booting and hitting SPACE to list the images of the microSD cards are two new features that were added only recently. You need to update both the EPROM chip firmware and the ATmega328 chip with the latest Arduino sketch.
So how do I do that? Hopefully it's something fairly simple.
All the instructions are posted within the first 3 pages of this topic.
Today I received mine and for some reason they don't work with the Dan ][ Controller. They are not defective, since both of them work on my laptop and on the ESP32 SoftCard that I am developing. However when I plug them in the Dan ][ Controller I cannot even see the files when I hit space.
It even doesn't work if I have the microSD card in slot 1 without an extender and just an empty extender in slot 2.
Sounds like it was picking up interference through the long leads when plugging the adapter. These adapter seem to be nothing else than SD slots with long extension leads. All signals, except the CS (chip select), are shared between the two slots - so, if there was an interference issue, it would easily affect both slots at the same time. The DAN II card uses simple resistor voltage dividers to convert the 5V TTL output of the ATMEGA to the 3.3V required for the SD cards (4k7 / 10k). So, these signals are not too strong and could be affected by interference. One could try to replace these resistors to make the signal a little stronger (like 470 Ohm / 1K).
Otherwise the adapter that Dan prepared would probably work better. It uses voltage dividers for the data signals on the adapter board, so the leads to the SD slot (after the divider) are still kept short. And, in fact, his external adapter already uses a 470 Ohm / 1KOhm voltage divider - so this design also uses stronger signals for the SD card. However, the CS and CS2 signals still uses 4K7 and 10K divider - and the 4k7 resistor is on the DAN 2 card (R27/R28). So this signal may still be affected by the same interference issue, like when using the AliExpress adapter.
dumb question from me: does the card work runtime as with my 6502 retro BBS system??
I completely wrapped one of the extenders with aluminum tape and grounded it, but it did not help, so if it’s due to interference it must be from one of the other lines in the ribbon. I will try with harder driving voltage divider resistors later.
I should have ordered more, so I can start cutting them with scissors and see exactly when the problem disappears, but I only got two and I rather like them, so I can’t do any destructive testing.
P.S. It turns out that these extenders have a 330 ohm internal pull up resistor between CLK and VDD. I am thinking of changing R9 from 470 to 47 ohms and R15 from 1K to 100 ohms.
Don't change to 47/100 ohms as that will probably draw too much current from the ATMEGA328P. I think you will have to remove the pullup.
It's unlikely to be interference that is causing the problems. The CS line uses 4k7/10k rather than 470R/1k dividers because the signal is relatively slow and doesn't require very fast transitions, unlike the CLK/MISO/MOSI lines.
I made an extender board that I haven't tried yet, but that would work as well. R27 and R28 should be populated with 4k7 resistors on the main board if this is to be used.
I didn't have 47/100 in my spares, but I changed R9/R15 to 80/160 ohms and it now works perfectly with both extenders. This should not draw more than 25 mA according to my calculations, which is still below the maximum of 40 mA for the 328P chip.
IMG_5591.JPG
Hi
Do you have a PDF of this board layout as I cannot find an updated BOM and placement file?
What are you looking for - a description showing the component placement? The photo of the PCB should help: https://raw.githubusercontent.com/profdc9/Apple2Card/main/pics/picver1.jpg
Otherwise, here's an image of the KiCad PCB showing the placement of components. If you're using KiCard directly, pay attention with the pullup resistors for the address lines (near the EPROM) though: the KiCad PCB design in GitHub still shows "4K7" pullups, while the schematic was updated to use "10K" pullups instead (10k is the better choice).
Apple2Card_Placement.png
This is not the correct photo, because it is version 1.0. My suggetion to Dan is to remove it from README.md in GitHub and update it to verson 1.1 of the card, since it has confused many people causing them to solder incorrect resistors.
Also for anyone making the card at home: always use KiCad to generate the BOM and look at the layout, instead of relying on images and PDFs.
Thanks, sorry new to this Forum and should have done a quote reply.
Yes, I wanted a BOM and placement file for V1.1 as going through the GitHub was confusingand is still showing the V1.0 board in the readme file.
Thanks again
I made a few changes to the selector menu of my controller cards. Mainly smaller changes to make it a little more visually pleasing. Also a matter of taste/personal preferences, of course...
I also made a few minor functional changes:
In case anyone was interested in some of these changes:
https://github.com/ThorstenBr/Apple2Card/commit/6e69de110043725eb41af016cfad1af39d0e13e8
DAN2Menu.jpg
DAN2boot.jpg
Already using it and loving it!
DanII.JPG
Is anyone else using the IP65 / Telent client on a II Plus with 80 column card? For reference, my 80 column card is a Micromax Viewmax 80.
I have it painfully close to working; When I launch ip65, its own messages change into and display in 80 column mode. I am able to get an IP, and specify a hostname and port number. I see my own text displayed while as I type it in. But that's where I get stuck; After specifying the port, I can only press keys to interact with the login screen of BBSes blindly. No text sent back from the BBS is being displayed within the 80 column display. If I press CTRL-RESET, kicking the machine back to 40 column mode, I see the (somewhat scrambled) text of my BBS login screen on the display until I clear the screen completely. So I know the Dan II is connected to the BBS, there is just an issue getting that data back to the display.
The compiled Telnet client is for a //e,//c,//gs 80 column card. This puts every other character in the first 64k 0400-07FF text page, and on the second 64k 0400-07FF text page. You are probably seeing every other character of the BBS login screen when you hit Ctrl-reset. It is not using the ROM character display routine, it is directly writing the display, and so it isn't going to use the video output of your Apple ][+ 80 column card. Chances are it would need to be modified, perhaps, extensively, for that to work.
You may be able to use something like the
https://github.com/profdc9/WifiModem
with Apple ][+ terminal software and a serial card that supports your 80 column card to access the BBS, rather than the Dan ][ ethernet port.
Sounds good, I appreciate the reply. And I think you're spot on with the alternating characters.
Not to go too off topic but I do have super serial cards, wimodems, etc. on hand. Perhaps I'll swap this Dan II card into a IIe or something if I want to try the ethernet again.
Terminal software wise; Proterm needs an IIe IIRC. Last time I temporarily put in a 65C02 (ProTerm asked for one) I was then greeted with "Proterm requires a IIe or newer" (paraphrased). If someone knows an 80 column capable terminal program that works on II+ please let me know.
Ascii Express Pro?
Looks promising, thank you. I'll give it a try.
Out of left field, has anyone had the thought of trying to get a2stream working with this, or does that rely too much on the hardware of the uthernet II?
I never had a Micromax Viewmax 80, but I have used AE Pro with both an ALS SmartTerm and Videx VideoTerm. I would guess that it probably supports most of the ][+ 80 column cards.
It isn't uncommon for software where display performance is critical on a //e (or //c or IIgs) to use custom code that writes directly to the display memory in both standard and AUX memory. The way that video works on a //e becomes a liability when running a terminal program above about 4800bps. It is one area where a ][+ style video card can actually have an advantage, because not only do those cards have dedicated video RAM, it is sequentially mapped and most of the video controllers used (6845/6545 or the Hitachi clones) have hardware scrolling that doesn't require the 6502 to move memory or bank switch.
I can confirm that Ascii Express v4.20 works with both of my 80-column cards on my Apple II+.
Ascii Express v4.20.zip
Videx Clone.JPG
SUP'R' Terminal.JPG
Which two cards are those? The first one looks like a pretty normal Videx or clone the 2nd one looks a little like a Franklin 80 column card except the ones I ahve don't have the large trim pots. Neither does the M&R Sup-R-Term that I have.
The first one is C80 CPL-3 - a Videx clone that seems to have been sold in Germany:
C80 CPL-3.JPG
The second is SUP'R' Terminal. The red pot is video level and the blue is video balance:
80ColumnCard.png
The Sup'R'Term I have looks a little different. The trim pots on mine are smaller and not colored like that. Anyway, I'd strongly suspect that if AE Pro works with a Sup'R'Term it will probably work with a ViewMax.
Thanks for trying it out... That should help.
I recently populated another 3 controller PCBs, the final from my PCB batch, but unfortunately none of them seemed to work. Turned out, nothing about the controller cards was different. It was just the MicroSD cards. Same brand and type as my previous, but obviously they were still different. They wouldn't work in the DAN ][ controller, but of course worked fine otherwise (PC / card reader).
Couldn't see anything abnormal with the hardware signal levels. So I eventually dived into the mmc driver, to see, what was actually failing with these cards. And how it differed from the others.
Eventually I found an issue with the low-level initialization of the mmc driver.
Normally, when the driver initializes an SD card, it first resets the card by briefly powering it down. It waits 100ms, so the power is really off, then re-enables the SD-slot's power supply, and begins with the setup sequence. It issues a command to enable SPI, determines the SD card type etc etc.
However, the DAN][ controller has no option to toggle the power-supply of the SD-slots - they are both hard-wired to Vcc. Hence, it's not possible to power-down/reset an SD-card. The related "power_down()" function was already commented out in the DAN][ Arduino sources. However, the driver would still attempt to power-down and re-initialize the cards, e.g. when switching access between SD slot 1 and 2. So, the driver was re-running the init sequence repeatedly - even if this was unnecessary, since no reset/power-down had occurred.
With my earlier SD cards, this was not an issue. However, with my newer cards, the very first command to "enable SPI" would fail, if this command had already been completed before. Hence, the mmc driver gave up - and the cards were unusable.
I made a few changes to fix this issue, so now my new cards all work fine (the old ones, too, of course). The driver now knows the SD cards are not actually powered down - and it prevents rerunnig the init sequence, when this had already been successful.
As a nice side effect, this also improves performance when alternating access between the slots (or SD volumes). This is most noticable when using the new boot menu, showing the volume names. This is much faster now, since the unnecessary power-down delays are gone (which meant a 100ms delay for each of the potentially displayed 32 volumes).
Did anyone else have SD cards which didn't work in the controller? If so, would be interesting to re-test these with this driver change. If anyone wanted to test this, you can find the relevant change in the commit below. But consider this "experimental". The commit contains another necessary fix (see git comment), which may need further investigation:
https://github.com/profdc9/Apple2Card/commit/7bf5d4568ab8fe73d7b6ddd5d8300b432b012443
What was the brand of the SD cards that didn't work?
I have tried the Dan ][ Controller with only these 2 different types and they both worked:
MicroSD cards.png
Btw, now that the controller can mount two volumes from 2 FAT32 SD cards, would it be possible to modify the firmware to mount 2 volumes from a single FAT32 SD card?
That's the one which didn't work, but is also working now. Also "SDHC, class 4" - just like your 8GB card. But I'm pretty sure it's not the class, neither the size. I also have a Kingston SDHC class 4 card which worked. It's probably just a matter of different cores/implementations/manufacturers.
intenso_sdhc_class4.jpg
Concerning mounting multiple volumes on one SD card: yes, theoretically that would be possible, using the same approach of dynamically switching volumes. In fact, the new boot menu is already doing this: it switches and reads from all possible files in order to obtain all volume names. Accessing multiple volume files is just not mapped to the ProDOS interface - so only one volume per card is visible to ProDOS at a time. Changing this would also complicate the configuration, of course.
For those interested: RTFM always helps. I had a look into the SD-card specification and made a much simpler and less intrusive fix. I also sent a merge request to profdc's repo. Fixes the compatibility issue with some SD cards, and also speeds-up switching volume access (= faster boot menu).
https://github.com/ThorstenBr/Apple2Card/commit/23306d94caca22ec30a1e94f19c17d401495a410
I applied your latest changes. Even though I could not reproduce the problem with 2 more 256 GB microSD cards from my car's dash cam and multimedia below, I can confirm that the Dan ][ Controller lists the FAT32 volumes at least 10 times faster now, which by itself is enough of a reason to update.
MicroSD cards2.png
Once again thanks for the great work!
No problem. We're all working on our own nerdy Apple I/II/III stuff and helping each other... :)
The fix & performance improvement are also available in Dan's official repo now. So the change can also be grabbed from there. And it's just the "Arduino" chip which needs the update. So no need to burn a new EPROM.
The compatibility issue I was seeing is probably more likely to affect cheaper/slower cards, since it's related to the SD card being slow to complete a reset command. SDXC are already a bit better/faster cards. The 4GB/SDHC card I was using is about at the bottom end you can currently buy (still good enough though for our 8bit demands...).
Where can I download the latest firmware files? (Arduino and ROM)
Ok, so MacFly made 2 improvements: the one in post #217 and the one in post #233. Only the second one was added to the original branch, so if you want both you have to use his branch: https://github.com/ThorstenBr/Apple2Card
Hi,
This looks like an interesting project. Does anyone in the USA have a blank controller PCB they would be willing to sell?
Thanks!
All essential changes (performance & SD-card compatibility) are already in profdc's official repo.
I'm still working on the boot menu. Made a few more changes this weekend. Those changes are currently only in my repo - but in this specific branch, if someone wants to try these changes:
https://github.com/ThorstenBr/Apple2Card/tree/bootmenu
Once I'm done, I'll also make a merge request with Dan's official repo (and then it depends on whether Dan even likes the changes, of course...).
bootmenu2.jpg
Nice! I see where you're going with this. :)
Is there a limit on the size of the bootpg.bin? I am asking, because I already OCR'ed the Apple Mouse II assembly routines from Programming the AppleMouse II and I was thinking to try to add them once you're done. I have them in the ZIP file here if you want to take a look.
So the bootpg.bin must fit into the ATMEGA328P flash. It doesn't use the SD card to store it.
Also, the boot code only loads the first page of the bootpg.bin to $800. Your code there would have to load the rest of your program before using it. There is a pseudo-Prodos call that accesses bootpg.bin rather than the typical Prodos read block function. The 512 bytes that should be loaded from bootpg.bin is specified there.
I was planning to also add support for arrow keys. The first 512byte block is almost maxed out with my version above. I already have a local version which also reads an additional block, so bootpg may be extended further (and you could read even more blocks). We're currently using a bit less than half the 32KB flash of the Arduino. So that's probably more than enough, if you wanted to play with the mouse driver.
Excuse my ignorance, but I updated to the latest firmware (rom and atmel) and I get the new selector menu when I press return.
I formatted my SD card and copied some PO images to it, but the selector doesn't show any of them... only
0: ---
1: ---
How do I select files on the card?
EDIT: Nevermind, I figured out you still have to name the files BLKDEV0X.po. It would be nice to able to select any file.
My estimate is that I would need about 400 bytes for the mouse routines. I don't plan to do a cursor or anything like that, just a simple selection roll and click. It should be fairly easy for me to hook it up once you have the arrow keys working.
The easter bunny brought a few updates for the DAN II controller. Yes, I was also a bit surprised he knows 6502 assembler, but as old German wisdom says: "old rabbits are experienced"...
The changes should work on all Apple II variants - but still "experimental". So maybe test using an EEPROM first, rather than burning an EPROM. Let me know if you noticed issues.
You can test these using this "bootmenu" branch of my git repo: https://github.com/ThorstenBr/Apple2Card/tree/bootmenu
Here's a list of changes:
BootpgConfig.png
Anyway, here's a small video showing some of the new functions - and how quick it is now without the Arduino UART bootloader:
https://www.youtube.com/watch?v=QbjO1JRJrGk
Happy Easter!
Have had a great time building the card and it works after a fashion.
I seem to have a problem in that when I close the link on Jmper 2 (bank) then the whole Apple 2e hangs on booting up. If I take the jumper off then computer will boot and load from drive 1.
I have removed all other cards except for the 80 column card.
Card hangs in the same way for MacFly's and Dans firmware versions. I have changed all the chips except for the HARRIS CP82C55A peripheral chip that has been in the parts box for some time.
Any suggestions would be appreciated.
The bank jumper (JP2) is required to allow the controller to switch between the first and second 256byte page of the ROM. With DAN's original firmware the second page is only ever needed when you press RETURN to activate the configuration. It's the only thing which is stored on the second page.
With my firmware (yesterday's post) the second page is required as soon as you press any key during the "DAN II PRESS RETURN" phase.
If you don't press any keys then both firmware versions will never use the second page, which requires the bank switch jumper.
According to your description the first ROM page works as long as you don't have the jumper set. But the machine hangs and doesn't boot as soon as you close the jumper. It should not make any if the jumper is even closed or not, as long as you don't press any keys.
You either have a defect 8255 PIO, so it's constantly driving PC0 (pin 14) high - or, maybe more likely, you didn't properly solder the pull-down resistor R2 - or the trace between JP2 and R2 is somehow broken, so the pin is floating.
Close JP2 and measure the resistance from JP2 to ground (should be 10 KOhm). If that's not the issue, then switch on the machine and measure the voltage at JP2 (needs to stay at 0V).
Many thanks for the explanations.
I will be trying these in the next couple of days.
I am waiting a replacement 8255 to try should it appear the chip is faulty.
You either have a defect 8255 PIO, so it's constantly driving PC0 (pin 14) high - or, maybe more likely, you didn't properly solder the pull-down resistor R2 - or the trace between JP2 and R2 is somehow broken, so the pin is floating.
Close JP2 and measure the resistance from JP2 to ground (should be 10 KOhm). If that's not the issue, then switch on the machine and measure the voltage at JP2 (needs to stay at 0V).
Thanks to your good advice I was able to track down the fault to the old Harris 8255 chip, after all the tests you suggested nothing had improved until I was measuring the volts on pin 14 of the 8255 , just touching the pin with a multimeter test lead booted the computer with jumper 2 shorted.
So I clipped a further 20 k resistor over the 10 k resistor of jumper 2 and now bank 1 and 2 work without fault.
I think I will now have to just wait for my supplier to send some new 8255 chips, which will save the need to put lower value resistors on the pull downs of the other selector lines.
I do like the new menu interface and again thanks for the good advice
Is it 8255 or 82C55?
Both chips tried so far are HARRIS CP82C55A purchased from a UK e-bay supplier.
Pages