Logic Analyzer & Apple II

Over the last few weeks, I have built several SmartDisk II, 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 … Read the rest

SmartDisk II – The Origin

I remember the first time I had my first prototype of what will become the SmartDisk II loading the NIB image of BoulderDash II on my Apple II.

The first prototype was made on a very poor quality breadboard with a STM32 Bluepill, with a lot of ICs. The process to load NIB image was not really accurate, but I was so proud of having at least something working. 

This was the beginning of my journey to design and build an accurate Apple II Disk Emulator. I reached out to the Applefritter community for help on this project, and I received more than what I was hopping. This was a few month of long hardworking and debugging session with a lot of up and down along this way.

The purpose of this project was really a personal goal to experiment, learn, understand, and build. My approach from the beginning was … Read the rest

Smartloader for SmartDisk

I received a message on AppleFritter to add a new feature on the SmartDisk II. The request was to have the content of the SDCard to be displayed on the Apple II at startup like Slot card are able to do it. I did not reply straight because I was not sure it was possible or not. 

I started reflecting on how I would do it given my knowledge of the DISK II interface card and also the way the SmartDisk II is working. I had an interesting discussion with Antoine Vignau on an approach that would use the SMARTPORT protocol with undocumented function around CMD. With this approach the SmartDisk II would issue a SmartPort CMD with specific parameters that are not used by the SmartPort ROM or the SP6 Rom. I still think this is possible, however the approach would assume that the Apple II has a SMARTPORT … Read the rest

SmartDisk Rev 8 PCB

The last stable board revision was rev.4. After doing test with beta revision 5 & 6, a new board revision is now available

While the form factor remains the same, there are a few enhancements in this new release :

  • A power regulator to replace the light one on the blackpill 
  • Diode and power fuse to better protect the SmartDisk
  • Resistor for future Mac floppy drive use.
  • Pull-up resistor to replace stm32 internal ones

If you have a rev.4, there is no need to upgrade and the firmware new version will continue to work on the previous release.

On the revision 8, one need to be careful with the power source and avoid to use 5V and 3V power supply at the same time (or SDIO with 5V) otherwise it will blow up the SmartDisk. On the left side of the board, above the buzzer, there are to power supply … Read the rest

To a Better Smartloader

Well, up to the current version (0.36), smartloader was relying on Prodos 2.4 and the MLI kernel to execute Read Write Block. 

The main drawback are launch time (mainly to load prodos (a few second) and the fact that only Apple II with a language card (16k RAM) are able to run ProDos.

A new approach has been considered to address the speed and the compatibility issue. 

This new approach relies on:

  • A custom bootloader on track 0 sector 0,
  • Fast RWTS library
  • The adaptation of the smartloader to use RWTS
  • Everything on a single track 0

The boot loader is the so called stage 1 of the boot process, and it starts at 0x801 (Org is at 0x800 the first byte is 0x01 and used by the boot ROM).

The bootloader will perform 4 steps:

  • Display immediately the Mask of the main screen, 
  • Load the RWTS routines (from sector
Read the rest

Story Behind Bouncing Kamungas

During my journey to build the SmartDisk II, I made a ton of mistakes, and at the same time I learned so much, but sometimes it takes very long to sort things out. This is the story of the Bouncing Kamungas where I scratched my head. 

The initial software version of the SmartDisk II was using the SPI DMA. SPI is a common hardware interface that enables to send at a given frequency a buffer of bytes. This last word is very important and you will understand why. 

The beauty of the SPI DMA is that it is not blocking or consuming CPU resources everything is done in the back. On top of it you can configure the bytes buffer to be circular and to restart at the end forever, a bit like the floppy disk drive.

SmartDisk was loading image track to the SPI buffer, with a length and … Read the rest