Apple II DISK Emulator using STM32

510 posts / 0 new
Last post
Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 19 2023 - 15:28
Posts: 308
Making Smartport Accurate !

Hello all,

Over the last few weeks, I have built several SmartDisk II emulators, and I have been testing the hardware and the latest firmware release on my beloved IIGS. The IIGS is very easy to work with, and loading GSOS 6.04 immediately reveals any timing issues.

Everything was fine until I received a message from a user explaining that some SmartDisks were working on the IIc Smartport and others were not, though all were working on the IIGS. 

I decided to sort this out, so I took all my 10 samples—and guess what? Half of them were not working on the IIc.

Finding the issue was like looking for a needle in a haystack, as the problem was not consistent.

I gathered my courage and reopened the engine. I spent endless hours trying to figure out what was not working.

I used my preferred logic analyzer, and for some reason the incoming request from the IIc was sometimes corrupted (checksum failed), and the sent response was erratic (timing fluctuating from 4μs to 5μs).I was scratching my head, with no clue what was happening. I decided to restart the whole process and make the Smartport emulation as accurate as possible.

To do so, I was missing an important tool to speed up the analysis: a custom, homemade protocol decoder. Saleae Logic 2 offers a framework based on C; I tried it, but it was not so easy to get started with.

 

Then I looked at Sigrok Pulseview, which uses a Python-based protocol decoder. It was exactly what I was looking for: simple, straightforward, and with various examples.

I built a complete Smartport data flow protocol decoder using the following pins:•    Phase 0–3: Host Request + Bus status•    Write Request: Write Start / Stop, Active Low•    Write Protect: Device Ack•    RD Data•    Write Data

It also computes the checksum for every request and response to make sure the data is not corrupted.Using this tool, it is now quite easy to diagnose if the emulator is strictly respecting the Smartport Spec (IIGS firmware documentation from page 160).

I started using the protocol decoder and encountered the same issue on the IIc, but not on the IIGS.

I checked all the pin signals and found that the Select line is free-floating on the IIc, but not on the IIGS. Of course, I had an interrupt attached to it, which meant it was preempting the CPU core for no reason, causing erratic delays.

Sometimes, a small thing can cause endless work

But that was not the only issue. I managed to adapt the code to make the timing perfect, and now it should be perfect from release v0.80.27. I will do some testing before releasing the new firmware.

 

I hope you will enjoy it

Vincent

Offline
Last seen: 1 day 8 hours ago
Joined: Jul 5 2018 - 09:44
Posts: 3072
I will be looking forwatd to

I will be looking forwatd to testing the new firmware version!

 

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 19 2023 - 15:28
Posts: 308
Before releasing the new

Before releasing the new firmware, it can be downloaded from github in the testUF2 folder, 

The version to be tested is the v0.80.28

Someone already told me that smartport for Yellowstone is not working, I do not have this card... 

It would be good to test it 

Thanks for your feedback 

Vincent

 

Offline
Last seen: 1 day 8 hours ago
Joined: Jul 5 2018 - 09:44
Posts: 3072
VIBR wrote:Before releasing
VIBR wrote:

Before releasing the new firmware, it can be downloaded from github in the testUF2 folder, 

The version to be tested is the v0.80.28

Someone already told me that smartport for Yellowstone is not working, I do not have this card... 

It would be good to test it 

Thanks for your feedback 

Vincent

 

I usually do a pull from GitHub and build it.  I have a couple Yellowstone cards, I will have to find one and give it a try when I have a chance.

 

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 19 2023 - 15:28
Posts: 308
Someone was kind enough to

Someone was kind enough to give me for a few weeks a Yellowstone card. 

I am very close to have it working on Smartport Emulation. 

The main difference is the read signal that is following the Write protect, Read Pin needs to be high for the Yellow Stone to detect the emulator. 

However I am struggling with the timing, I am using totalreplay and it is freezing before the homepage (at the stage where we sse the memory on the screen)

Is there something special on the Yellowstone ? is there a test program ? 

Thanks 

Vincent 

 

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 19 2023 - 15:28
Posts: 308
Yellowstone is working ! 

Yellowstone is working !

I mean the Smartdisk is now working with the YellowStone ;)

Thanks to Steve Chamberlin 

 

 

Offline
Last seen: 1 day 8 hours ago
Joined: Jul 5 2018 - 09:44
Posts: 3072
VIBR wrote:Yellowstone is
VIBR wrote:

Yellowstone is working !

I mean the Smartdisk is now working with the YellowStone ;)

Thanks to Steve Chamberlin 

 

 

Very nice of him to help out considering your floppy emulator is shaping up to be a real serious competitor to his BMOW FloppyEmu but at a much lower price point.  But have always gotten the impression that he was a real decent guy who supports his products like Yellowstone very well.  I remember a number of years ago before he was sure Yellowstone was going to happen as a product that he gave away all his work up to that point for free.

 

 

 

Offline
Last seen: 1 hour 11 min ago
Joined: Apr 1 2020 - 16:46
Posts: 1334
About the notion of competing floppy emus ...

In post #458, 'softwarejanitor' wrote:

 

" Very nice of him to help out considering your floppy emulator is shaping up to be a real serious competitor to his BMOW Floppy Emu but at a much lower price point."

 

Uncle Bernie comments:

 

Agree that Steve is a nice guy who stands behind his products,  but I think VIBR's floppy emu is not really competing with the BMOW floppy emu. This has nothing to do with the respective capabilities as such. The key point - which many people don't see in the right (factual) way - is that the former (VIBR's) is a DIY project while the latter (BMOW) is ready to plug in right out of the box. This is a very important difference. People who don't want to solder hardware together (or don't have the time, or don't have the skills ...) will go for the one that is ready to plug in right out of the box.

 

For the same reason, ready made Apple-1 clones also do sell, despite of their high prices.

 

- Uncle Bernie

 

P.S.: if you put a price tag on your work hour building things, or ordering components for it, almost no DIY project is really cheap. This is why it's called a "hobby". Steals your time and costs you your money ;-)

Offline
Last seen: 5 months 2 weeks ago
Joined: Jun 5 2025 - 10:58
Posts: 10
[SMARTPORT MODE]

Hi,

 

I tested 0.80.22 in smartport mode. Not working on my 2e with a SMART DISK II nor on my 2C (ROM 4X). The buzzer "clicks" at reset but not charging anything. PR#5 gives I/O error. good news, the display issue is fixed (supperposing File name with SELECT).

 

Hope this helps

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 19 2023 - 15:28
Posts: 308
v0.80.31 is out, ready to be

v0.80.31 is out, ready to be tested 

 

/*

16.11.25 v0.80.31

+ add screen update with WR displayed during write process

+ Fixing issue with write process not working after several writes

+ Adding missing variable reset for write process

+ Fixing issue with buzzer not stopping after play_buzzer_ms function

+ Adding flgSoundEffectActive to avoid overlapping sound effect

+ Fixing DOS Init process and rewrite of the write process

+ Timing adjustment on write process to match better the Apple II timing

+ Adjusting IIGS constraints

+ YellowStone card tested OK with write process

+ Fixing state of SDCard during switch from write to read mode (add a small delay to check state of the SD)

+ Adding Marquee text effect, scrolling text on the OLED screen

+ Fixing minor issue on marquee text rendering

+ Changing Buzzer timer to 10

 

WOZ test :

+ Blazing Paddles working OK

+ Borderzone KO

+ Bouncing Kamungast working OK

+ Hard Hat Mike working OK

+ Crisis Mountain working OK

+ Dino Eggs working OK

+ First Math Adventures working OK

+ The print Shop Companion working OK (Use Weak Bit feature)

+ Commando working OK (Use Weak Bit feature)

+ Miner 2049er II working OK

+ Planetfall working OK

+ Rescue Raiders working OK

+ Sammy Lightfoot working OK

+ The Bilestoad working OK

+ Stickybear Town Builder working OK

+ Take 1 working OK

 

Thanks for your feedbacks 

Vincent

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Using stlink to program the stm32?

Hello,

 

I have never used a blackpill or any version of stm32, can someone point me to a step by step on how to program the disk emulation software onto the device please.

 

I normally do all my work in Linux and have installed stlink ready to go! I have ordered a F411 type board and an STLINK adapter.

 

Thanks.

Offline
Last seen: 1 day 8 hours ago
Joined: Jul 5 2018 - 09:44
Posts: 3072
coopzone wrote:Hello, I have
coopzone wrote:

Hello,

 

I have never used a blackpill or any version of stm32, can someone point me to a step by step on how to program the disk emulation software onto the device please.

 

I normally do all my work in Linux and have installed stlink ready to go! I have ordered a F411 type board and an STLINK adapter.

 

Thanks.

 

I do everything on Linux also.  I have an ST-LINK V2 programmer and I use the STMCubeProgrammer software available from STM's web site.  I did a "git clone" of VIBR's GitHub aand I do a "git pull" then a "make".  I had to install some cross compiler tools to get the build to work.  Basically once I've built it I plug in the programmer to the STM32, run the programmer softwae, load the ".elf" file, click connect to the STM32, then click download and then once that completes I disconnect from the STM32, disconnect the programmer and it should be ready to use.

 

There are pics in post # 361 of this thread that show how to plug in the programmer and what the programming software looks like.

 

 

 

 

Offline
Last seen: 1 week 13 hours ago
Joined: Dec 19 2003 - 14:45
Posts: 17
Hi Vincent,Quick question.

Hi Vincent,

Quick question. Have you been able to try your device on an A2S4100 Apple IIc with the Memory Expansion Card? I am working on solving some bugs in the SPIISD firmware, and while it's working much better than previously, it falls flat on my A2S4100 when booting from the internal drive.

Symptoms are:

1) Boot with a ProDOS floppy, with the device on the smartport

2) Device gets the INIT call (FF FF FF FF FF C3 81 80 80 80 80 82 81 80 85 82 89 80 80 80 FF 80 80 FF AF EA C8) and answers

3) Device gets what should be a STATUS call (FF FF FF FF FF C3 81 80 80 80 80 82 81 80 80 83 80 80 90 80 80 80 89 80 BA EE C8 on A2S4000), but it is truncated and the 14 first bytes are missing: 83 80 80 90 80 80 80 89 80 BA EE C8)

 

I'm a bit at a loss, there is no way the device is busy doing something else for 448µs. ALSO, if booting from the SPIISD device, same floppy image on the SPIISD as in the internal floppy, everything works!

Offline
Last seen: 1 week 13 hours ago
Joined: Dec 19 2003 - 14:45
Posts: 17
Forget it, I figured it out -

Forget it, I figured it out - the A2S4100 takes a LONG time to turn REQ on before sending packet, and the firmware timed out.

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 27 2024 - 18:25
Posts: 4
My build of Apple II Disk emulator

Hello everybody,

Some time ago I came along this thread and I was really impressed by the work and effort Vincent has put in this project.  So I ordered some components and start soldering. As I am completely new to the STM32 family I took this project to enlarge my knowlegde about microcontrollers.

After building a exact copy of the schematic on Github I tried to flash the software, first starting with the bootloader V0.16. First problem I encountered was that the STLINK programmer in conjunction of the ST32CubeProg keep saying there was a errror in erasing the chip  (a blackpill 32F411 board from Ali) after nummerous tries with different OPTION BYTES is succedeed in flashing bootloader V0.16.  Unfortunatly this bootloader was giving my a unknow device on my W10 machine. Consulting this thread i discoverd I should try V0.13.

And eureka I was able to flash the latest emulator software!

Now the fun could begin. I loaded some images on the SD-Card and everything worked as expected !!!! The I started to try to make backup's of the floppy I have. For that I moved the emulator to de second disk port on my controller card (standard Aplle II disk controller) and hooked up the original drive on to the first disk port. There I my first problem. The Apple II was not able to boot from the original drive. Motor was running and  the Red light was on but could not load any software.  The only thing I could think of is that the emulator was messing up the read data from drive 1 as the share the same signal. To resolve this I started to put a buffer between als signal lines of the emulator (all incoming lines to the emulator are buffered by a CD4050 with vdd to 3v3 to also do signal conversion 5v -> 3,3v and the outgoing lines through a three-state buffer 74HC125 enabled bij the ENBL lines isolating the emulator when not selected)

 This cured the problem of not having the emulator and original drive on the same controller. Did somebody also had this problem, or did I make a failure in my build?

 

Now I ran in a other problem that I could'n resolve .  Creating a new disk image on the emulator (with build in menu) works fine, but I have been unable to initalize this image under dos 3.3. Performing the command INIT HELLO , D2 never ends. I can see the emulator is writing tracks but some on the end , I think when the catalog is written or something everything comes to a end. The command never terminates and there also no action to see on the emulator. Could somebody verify if they have the same problem or tell my what I do wrong.

I think my hardware is all working fine as I am able to create a copy of a floppy disk on the emulator with LOCKSMITH.

 

Really puzzeled here........

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Trying to get started - please help

Hello,

 

I have cloned the git repo, and am currently trying to program the STM32. I only have access to a LINUX machine so i'm trying to use st-link-gui. But no matter if i try to write the bootloader or the complete binary i always get a meesage saying "binary overites flash" and nothing get written.

 

Anyone know the correct setting to use?

 

 

 

Thanks 

 

Derek

Offline
Last seen: 1 week 4 hours ago
Joined: Jun 11 2025 - 11:24
Posts: 21
Hi @driessens_nl , I have the

Hi @driessens_nl , I have the exact same problem. I can read disk images, but I can't write anything to the disk images using SAVE. Other functions don't work either, even if the emulator is the only one connected to DiskII. I'm wondering if the problem isn't that I'm using an AppleII Europlus.

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 27 2024 - 18:25
Posts: 4
did get to a next step

I have managed to initialise a disk image on the STM32 emulator. As I don't know how Vincent did think how to use the WRITE PROTECT signal (maybe a menu option in the future to make a image file write protected?) , but for now I did make my own write protect signal using a switch on this signal.

So at this moment I am able to use a real disk drive and the emulator on the same interface board by using the buffers I added and able to do some writing by using a switch as write protect signal.

I measured the disk speed using LOCKSMITH 5.0 and noticed is was quite a little bit to slow. I don't know if this is due to my test setup (Apple II europlus) or that is is really on the slow side.....

Could it be my STM32 is on a too slow clock ???  After all it's coming from ALI ........

 

Coming days I will start a testplan on different image types and see what will work

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Discord server?

The link on github does not work, expired. Does discord get used still? Anyone got an updated invite?

 

Derek

 

2eSteve's picture
Offline
Last seen: 1 week 3 days ago
Joined: Feb 19 2026 - 09:36
Posts: 17
Yes Discord still live

I was talking to Vincent the other week on there. 

Just started a Issue post on Github and he sent me the invite .

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 19 2023 - 15:28
Posts: 308
Hello, I am taking a few days

Hello, 

I am taking a few days off, 

Regarding the writting issue could you please test with the latest firmaware in the testUF2 folder on github ? 

Vincent 

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Info for using st-flash to program the stm32

Hi everyone,

 

I know there is a version of Cube programmer for linux, and yes it works. But it's also over 800 meg when installed. Considering this is the one and only time I use the black pill, I think 800M is a little over kill!

 

Anyway to use st-flash, you can:

Step

1, sudo st-flash --area=option write 0x0FFFAAED <-- Be very carful here the value of these flags can 'brick' the stm32, type with care!

 

2, sudo st-flash erase  <-- optional but it seams like a good idea to start clean.

 

3, sudo st-flash write /path/to/bootloader_file  0x08000000 <-- you can write the bootload or the binary compiled install, i use the bootloader version. it makes sending uf2 files for updates/testing very easy.

 

4, before continueing power off (unplug the usb flaher, and plug in the USB cable)

 

5, copy the UF2 file to the mounted disk.

 

done

Offline
Last seen: 1 hour 11 min ago
Joined: Apr 1 2020 - 16:46
Posts: 1334
In post #473, 'coopzone'

In post #473, 'coopzone' wrote:

 

" Considering this is the one and only time I use the black pill, I think 800M is a little over kill ! "

 

Uncle Bernie comments:

 

It's not only "overkill", it's bloatware. No programmer using JTAG or similar protocols should be 800M large.

 

What's even worse is this:

 

 sudo st-flash ....

 

Bummer ! So you download 800 Mb of bloatware and then give it superuser privileges.

 

Yeah, I know, Linux requires that to access physical hardware ports on the lowest access level, but still, it's freaking dangerous, what if the bloatware contains malicious code equivalent to 'rm -R /*' ? Or some ransomware ? Or some spyware ?

 

There ought to be a better way to access ports, which is safe. Such as a generic device driver.

 

I'd like to see your opinions on this. I've designed a small and cheap PIC programmer for my YAAK keyboard project and I'd like to have it run under Linux, too (not only on DOS ;-) but so far I found no way to access the printer port on a Linux machine without giving the program a suid root.

 

Does none of you have concerns with using device programmers who need to be root ? Is there some ST32 programmer which does not need to be root ? I must say, this safety issue kept me from looking into the ST32 at all. Anyone out there with the same concerns ?

 

- Uncle Bernie

 

Offline
Last seen: 10 hours 23 min ago
Joined: Jul 25 2025 - 21:54
Posts: 43
Rule of least privileges ...
UncleBernie wrote:

In post #473, 'coopzone' wrote:

> > " Considering this is the one and only time I use the black pill, I think 800M is a little over kill ! "

> Uncle Bernie comments:

> It's not only "overkill", it's bloatware. No programmer using JTAG or similar protocols should be 800M large.

 

Must be Java or C# ;-) (only partially kidding & it is Java).

 

> Yeah, I know, Linux requires that to access physical hardware ports on the lowest access level, but still, it's freaking dangerous, what if the bloatware contains malicious code equivalent to 'rm -R /*' ? Or some ransomware ? Or some spyware ?

 

Infuriating major mistake, many times there are proper ways to access ports that require succh permissions. I haven't loaded the package so I can't say what they are accessing. 

Offline
Last seen: 1 hour 11 min ago
Joined: Apr 1 2020 - 16:46
Posts: 1334
On the risk with running a device programmer as 'root'

In post #475, 'linuxha' wrote:

 

" ... many times there are proper ways to access ports that require succh permissions ... "

 

Uncle Bernie comments:

 

I only ways I see to solve this problem of safety and system integrity are:

 

a) open source programs which are small and clear enough to be 100% inspected for backdoors and malicious content.

 

b) a trusted device driver which implements a 'state machine' that is powerful enough to run the timing critical parts of the programming algorithm and handles all the low level I/O to and from the hardware port. The actual programming software then could run with normal user privileges.

 

Alas, Linux is not a RTOS. Neither is DOS. But in DOS machines, you can turn off the interrupts to avoid disturbance of the programming process. I've not gotten to the point where I could tell how to turn off interrupts in a Linux device driver.

 

It would be great if there was a 'safe' ST32 programming tool which does not require to run as 'root'. Until we find out how to do this, I'd recommend use of a 'throwaway' installation of Linux on some old notebook which contains nothing except the bare bones Linux installation and the programming software, and never is connected to the internet.

 

I would never run such a programmer needing 'root' privileges on my actual Linux machine on which I do my work and keep my own files.

 

- Uncle Bernie

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Hi, st-flash is the
Hi,
 
st-flash is the alternative not the 800m ST sorftware
 
UncleBernie wrote:

In post #473, 'coopzone' wrote:

 

" Considering this is the one and only time I use the black pill, I think 800M is a little over kill ! "

 

Uncle Bernie comments:

 

It's not only "overkill", it's bloatware. No programmer using JTAG or similar protocols should be 800M large.

 

What's even worse is this:

 

 

Offline
Last seen: 8 hours 57 min ago
Joined: Feb 27 2021 - 18:59
Posts: 881
use the power of unix
UncleBernie wrote:

It would be great if there was a 'safe' ST32 programming tool which does not require to run as 'root'.

In general Unix system administration practice, that would be to assign the device file used by the program to a new group, and then making the program setgid to that group. This is the privilege management used in traditional Unix for things like printer ports and I see no reason it is inadequate in this situation.

Instead of setgid, you could add the user who is doing the programmer to the new group. You do not need to do both.

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
UncleBernie wrote:In post
UncleBernie wrote:

In post #473, 'coopzone' wrote:

 

" Considering this is the one and only time I use the black pill, I think 800M is a little over kill ! "

 

Sorry I Don't think I was very clear, st-flash is open source and works well from the command line. The 'overkill' package is downloaded from STM and the download size is 800M but installed it's 1.4G:

du -s -h /opt/STMicroelectronics/

1.4G    /opt/STMicroelectronics/

Considering what it offers (programming the stm32 chip) it really is overkill! I will be deleting it and sticking to open source.

Have fun!

Derek 

 

 

Uncle Bernie comments:

 

It's not only "overkill", it's bloatware. No programmer using JTAG or similar protocols should be 800M large.

 

What's even worse is this:

 

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Cable pinout for using as a second drive on apple iic

Well, i worked out most this by now.

 

How to compile the software from the github site

How to program the board using st-flash without the sudo ! and without any cube software.

Connecting to an apple iie with a DISKII controller

Connecting to an apple iic as a smartdrive with 4 hd images.

 

All works fine, however.....

 

I would like to use it as an external second drive on the iic , but no luck so far. I've made up a custom connector, i've tried swapping the enable inpout to disk 2 select (extint pin) but no luck. It just seems to never get off track 0 and it stops the CTRL-apple-reset from working? (i'm using ROMx4)

 

So anyone got it working? what cable are you using ? Any info welcome.

 

PS if anyone wants info on the setup I have just ask....

 

Derek

 

Offline
Last seen: 1 month 3 weeks ago
Joined: Nov 27 2024 - 18:25
Posts: 4
second drive

 I had a simular problem when connected the emulator as a second drive on a standard apple II disk controller. I solved this by adding extra buffers to the signal lines , these buffers ar disabled (tri-state) when the emulator is not enabled. I think some of the signals from the emulator corrupt the data from the other drive when not enabled.

BTW a how-to to compile the software is more than welcome. Although I usually use a windows system

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
What did you do exactly to

What did you do exactly to add in the buffers? Got a ciruit or at least a wiring list? Thanks.

 

And this is what I do to build the software:

 

One method of compiling the software for AppleII DiskII STM32F4 software. I’m not sure this is the best way to compile the software, most people seem to use an IDE of some sort. I’m not against IDE’s but I never seem to get along with them!

 

Step one 

 

I am assuming Debian based distro here, ie Debian,mint or Ubuntu etc. You can almost certainly do the same thing on other linux distro’s .

 

Install some tools

 

sudo apt install python3 git make gcc-arm-none-eabi xxd

 

(This will pull in the dependancies as well)

 

Step two

 

clone the GitHub repo’s for the project and the STM32F4 libraries

 

mkdir github

cd github

git clone https://github.com/vibr77/AppleIIDiskIIStm32F411.git

 

git clone --recursive https://github.com/STMicroelectronics/STM32CubeF4.git

 

You now need to ‘configure/update/init’ the STM32CubeF4 download, from the get hub readme you do:

cd STM32CubeF4

git pull

git submodule update --init --recursive

 

cd ..

 

Step three 

 

Setup the ‘drivers’ for compiling the Disk II Code

 

cd  AppleIIDiskIIStm32F411

ln -s ../STM32CubeF4/Drivers/ .

 

Your done, now to compile it:

 

Step four

 

From the AppleIIDiskStm32F411 directory, run

 

make

 

Once it finishes last last lines of the output indicate the files produced:

 

Memory region         Used Size  Region Size  %age Used

             RAM:       53264 B       128 KB     40.64%

      BOOT_FLASH:         408 B        16 KB      2.49%

     EEPROM_EMUL:           0 B        16 KB      0.00%

           FLASH:      212440 B       480 KB     43.22%

arm-none-eabi-size build/AppleIISDiskII_stm32f411_sdio.elf

   text   data     bss     dec     hex filename

 202712   10136   43136 255984   3e7f0 build/AppleIISDiskII_stm32f411_sdio.elf

arm-none-eabi-objcopy -O ihex build/AppleIISDiskII_stm32f411_sdio.elf build/AppleIISDiskII_stm32f411_sdio.hex

arm-none-eabi-objcopy -O binary -S build/AppleIISDiskII_stm32f411_sdio.elf build/AppleIISDiskII_stm32f411_sdio.bin

 

Step five

 

To produce a UF2 file for use with the bootloader program:

 

uf2conv/uf2conv.py -b 0x08010000 -f STM32F4 -o build/AppleIISDiskII_stm32f411_sdio.uf2 build/AppleIISDiskII_stm32f411_sdio.bin 

 

Converted to uf2, output size: 490496, start address: 0x8010000

Wrote 490496 bytes to build/AppleIISDiskII_stm32f411_sdio.uf2

 

Your done, you now have the bin file, a elf file and the uf2 file

 

I Have one used the uf2 file myself as I prefer the bootloader way forward. 

 

Derek

 

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
I forgot to say, there is a

I forgot to say, there is a define for USE_BOOTLOADER, the only place I can find it in use is the LD memory definitions and it seems you can overide them when creating the uf2 file with a parameter, but it's probably safer to use it correctly , so the build line should be:

 

make USE_BOOTLOADER=1

 

Derek

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
bootloader source code

Hello,

 

Is the bootloader source code published anywhere ? I'm interested in reading through it.

 

Derek

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Using with softSP

And another daft question!

 

I have some A2Pico cards, so I thought I would give one a go with softSP installed. It should allow the use of a Disk II controller to act as a SmartDisk Port. But no luck using it with this card running as a smartdisk.

 

Anyone else give this a go yet? Any luck?

 

Derek

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Ha got it working!  The clue

Ha got it working! 

 

The clue was it the ROM image used with softSP, no whwere does it say it on the softSP githubsite. But the Smartport disk (ie the Apple II DISK Emulator, in smartport mode) must be in Drive 1 slot/postion on the Disk II controller.

On the ROM providers site, it says:

As request by DIY softSP users, we also update that version. It’s performance is the same as our softSP Card which support ANY slots and correct the drive B requirement for some programs. To Download the latest version of the Firmware, go to the following location:   DIY softSP Card firmware v2(FOR DIY ONLY)

 

So I now have my A2pico card flashed with softSP in slot 7

my Disk II controller card in Slot 6

And the Apple DISK II emulator running in smartportHD mode connected to the Disk II controller on port 1 (lowest port on the board)

 

And it works!

 

Derek

 

 

 

2eSteve's picture
Offline
Last seen: 1 week 3 days ago
Joined: Feb 19 2026 - 09:36
Posts: 17
coopzone wrote:Ha got it
coopzone wrote:

Ha got it working! 

 

 must be in Drive 1 slot/postion on the Disk II controller.

.....

And the Apple DISK II emulator running in smartportHD mode connected to the Disk II controller on port 1 (lowest port on the board)

 

Isn't Port 1 the top connector on the Disk II Controller though?

I am thinking of having some PCBs made for the A2Picos and softSP is one of the options I am interested in tryng so your (Working) setup is of interest to me on at least one of my Enhanced //e systems.

 

Steve

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Sorry I thought the disk

Sorry I thought the disk connectors where labelled 0 and 1, but it should be drive 2

 

I keep forgetting in apple land the drives are 1 and 2 not 0 and 1 !

 

Derek

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
Issue in SmartDisk mode

To start with this message is feedback and hopefully helpful. I think this project is fantastic and it's real fun to use. Many thanks for all the hard work.....

 

I am currently using bootloader 0.16 and version 0.8.34

Tested on apple IIC with ROM4, Apple IIC ROM4X, apple IIe with softSP and a disk II controller.

 

The board seems to lock up if you leave it standing for a few minutes. Requires a reset of the board and re-boot of the apple.

 

For example I have 4 images selected, Prodos 2.4.3, Blank prodos, Total-replay and pitchdark. as 1 to 4. If it boots from Prodos 2.4.3 and I use the TAB key it goes from disk to disk showing the directorty as expected. Then I walk away for 10 mins or so, come back. Press TAB key and the RD indicator on the OLED moves, but the directory listing on the screen does not update. After 2-3 TAB presses everything locks up and requires the board to be reset and the apple re-booted.

 

Get the same issue on all 3 apple machines. Other smartdisk devices work without issue.

 

Derek

 

Offline
Last seen: 1 month 2 days ago
Joined: Aug 16 2024 - 14:02
Posts: 26
By way of a small update to

By way of a small update to the SmartDisk issue posted before, I took a deeper look at the github site issues / comments and found someone else reporting almost the exact same thing. They had created a patch to the 0.34 source that basically keeps the sd-card awake. I have applied this patch and can report it seems to help or even fix the issue on all three of my setups.

 

Many thanks to all the contributions on this project from everyone especially the creator Vincent BESSON and hkzlab who created the patch.

 

Derek

2eSteve's picture
Offline
Last seen: 1 week 3 days ago
Joined: Feb 19 2026 - 09:36
Posts: 17
coopzone wrote:By way of a
coopzone wrote:

By way of a small update to the SmartDisk issue posted before, I took a deeper look at the github site issues / comments and found someone else reporting almost the exact same thing. They had created a patch to the 0.34 source that basically keeps the sd-card awake. I have applied this patch and can report it seems to help or even fix the issue on all three of my setups.

 

 

Great news Derek,

Mine also locks up if left alone in SmartPort mode. If I leave the Total Replay demo (screensaver) running it will eventually just hang the Apple //e and requires a reset. Same if I use a different image (ProDOS 8 boot drive).

I absolutely love this device and look forward to further improvements especially in the SmartLoader (Which is how mine are all set by default (3 apple //e enhanced machines).

I only have one machine capable of SmartPORT and it is set up to use SoftSP via a Orange Micros Grappler+ with a OneROM 24 serving the BIN code of V6.

Like you, no criticism just feedback, as like I implied ‘this is a brilliant device’ and I so appreciate Vincent making it available to us all.

I do have some A2Pico boards (based on your comments) and the components on route from JLCPCB/LCSC and am looking forward to playing about with those as well (I NEED MORE SLOTS lol)

Regards

Steve

Offline
Last seen: 1 month 1 week ago
Joined: Jun 9 2022 - 01:20
Posts: 35
Apple II DISK Emulator using STM32 - functional on Apple II

Hi all

 

I have used VIBR github project to build the Apple II DISK Emulator. I used it on my Apple II ( not plus ) and so far is working as expected. More testing to come. 

Just a side note...maybe an update of  pdf documentation might need some reviews/revisions.

 

Great job done !! 

 

Thanks

 

 

 

 

Online
Last seen: 1 hour 27 min ago
Joined: Apr 8 2026 - 20:39
Posts: 27
Hi  kalustian What smd parts

Hi  kalustian

 

What smd parts did you solder to the pcb?

 

I can see that U1,C1,C2,Buzzer, Fuse are not present.

 

I just received my pcb's and components yesterday.

 

Offline
Last seen: 1 month 1 week ago
Joined: Jun 9 2022 - 01:20
Posts: 35
Required parts used only

Hi, I have only used the required parts...including D1. Buzzer is listed as optional. I have already purcahsed the buzzer ...will solder it soon. Notice I have solered the 5v and BPF1 pads.

Online
Last seen: 1 hour 27 min ago
Joined: Apr 8 2026 - 20:39
Posts: 27
So far, so good.  Still

So far, so good.  Still reading up on why the 95AD- line appears when I try to mount a file.

 

Time to add all the optional components to the pub. 

 

Online
Last seen: 1 hour 27 min ago
Joined: Apr 8 2026 - 20:39
Posts: 27
A few observations and notes;

A few observations and notes;

 

Using the SMARTDISK II Rev.8 pcb

 

SDcardIO  part U2 

-  GCT-MEM2055-00-190-01-A_VIB part is no longer available when ordering at various sites, I have not located any in stock at the moment.

-  Mouser 640-MEM20750014001A for the SD card interfers with the VIA'S on either side of the pcb footprint and the alignment pins on the bottom of U2 will not match the pcb holes. 

----edit the pcb before ordering to align the part

----add capton tape or UV conformal coating between the pcb and U2 and cross your fingers!

 

Buzzer part number BZ1  AS-1201B-LF shows  1.5VAC on the datasheet not VDC. Can anyone confirm that this buzzer is working on your unit? (My buzzer remains silent)

 

A 2.42" Oled display works well as a direct substitute for the 0.96" version (2.42OLED=IIC ver1.1) 

2eSteve's picture
Offline
Last seen: 1 week 3 days ago
Joined: Feb 19 2026 - 09:36
Posts: 17
Aurbo wrote:A few
Aurbo wrote:

A few observations and notes;

 

Using the SMARTDISK II Rev.8 pcb

 

SD card Slot:

I had the same issue with the SD card Slot part but...

Mouser 640-MEM20750014001A part was ok on mine as I removed the location pins and my boards were made with solder masked vias. Had I not had maked vias i would have used UV curable solder mask.

 

Buzzer:

I used Mouser 253-AS1201BLF and it works flawlessly once enabled in settings.

 

Screen:

Thats really good to know, I might order some of those as I do prefer larger screens TBH.

 

All the best Steve

Online
Last seen: 1 hour 27 min ago
Joined: Apr 8 2026 - 20:39
Posts: 27
Thanks for the confirmation

Thanks for the confirmation 2eSteve

 

I had a short to ground on SD_Eject line, I was able to desolder the U2 and use Capton tape as a barrier at ground tab to protect the via

 

I will check settings to enable buzzer

 

Reformatted the SDcard o be safe and finally made progress!!

I was able to load a diagnostic utility from the EMU but it returned a floppy disk write protect error,  still researching that

 

2eSteve's picture
Offline
Last seen: 1 week 3 days ago
Joined: Feb 19 2026 - 09:36
Posts: 17
Aurbo wrote:Thanks for the
Aurbo wrote:

Thanks for the confirmation 2eSteve

 

I had a short to ground on SD_Eject line, I was able to desolder the U2 and use Capton tape as a barrier at ground tab to protect the via

 

I will check settings to enable buzzer

 

Reformatted the SDcard o be safe and finally made progress!!

I was able to load a diagnostic utility from the EMU but it

 

I found that using the built-in format option (Settings->Make filesystem) best for creating the blank SD card. Then copy over the DSk files as normal.

I don't get any issues with writing but it was flaky when I used a andriod formatted card (my bad) should have reformatted on a older win, mac or linux machine instead of using a card I found in an  android device I had in for distruction :)

ATB

 

Steve

 

 

Online
Last seen: 1 hour 27 min ago
Joined: Apr 8 2026 - 20:39
Posts: 27
So far it appears to be

So far it appears to be working for me, I now need to go through the file images and sort out the ones that are not ][+ capable

 

I might tweak the original .sch and .brd Kicad files update the U2 footprint and slightly increase the pcb size to add mounting holes.

Using an empty DISK II drive case, I can 3d print a new front face to use as a home for this new disk emulator.

2eSteve's picture
Offline
Last seen: 1 week 3 days ago
Joined: Feb 19 2026 - 09:36
Posts: 17
Aurbo wrote:So far it appears
Aurbo wrote:

So far it appears to be working for me, I now need to go through the file images and sort out the ones that are not ][+ capable

 

I might tweak the original .sch and .brd Kicad files update the U2 footprint and slightly increase the pcb size to add mounting holes.

Using an empty DISK II drive case, I can 3d print a new front face to use as a home for this new disk emulato

Great,

Glad to hear you have had a good outcome.

This is my favorite controller so far (FloppyEMU is too expensive in the UK with shipping and tax).

Agreed the footprint of U2 needs changing (I am happy with the board size though) Would do this myself but I use Fusion and can't really warrent yet another SLC such as Kicad (is installed on my Mac though). 

Really like the Smartloader feature (all be it a little buggy - MAIN menu) being able to flick between Disk and smartport is so useful.

ATB Steve.

PS can't thank Vincent enough for this and the help he has given me personally. Top guy.

Pages

Log in to post comments