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 0x01 to 0x08) to $BD00,
- Load the Smartloader main routines (from sector 0x09 to 0x0E) at $4000
- Hand over to Smartloader
Dos3.3C RWTS are very commonly used, the main issue is the double buffering when reading and write from and to the disk. The performance could be better.
There were many alternative such as DavidDos, DiversiDos, FastDos, ProntoDos with alternative & optimized RWTS.
On most of the Dos and alternatives RWTS routines stands on disk from sector 0x02 to 0x09, (bootloader is sector 0x0 & 0x1).
Because the aim is to have everything on a single track to avoid drive head move & latency, every single space available need to be used.
The Smartloader disk is organized as :
- Bootloader single sector: track 0 sector 0
- Fast RWTS sector 0x01 to 0x08
- Main Smartloader sector 0x09 to 0x0F (currently 0x0D)
Memory location is :
- 0x800 bootloader
- 0x4000 smartloader
- 0x2000 SetCommand to send Command to the SmartDisk II
- 0x2100 2×256 Bytes for Read buffer from the smart disk II
Track Allocation:
- Bootloader, RWTS, Main Smartloader is on track 0
- Track 2 sector 0 & 1 Read sector from SmartDisk II
- Track 3 sector 1 Write sector to SmartDisk II
The trick used by the SmartDisk is to have a dedicated driver to send / receive information between SmartDisk / Smartloader using 2 tracks.
The specific driver on the SmartDisk detects a write on Track 3, capture the command, and reply on track 2 with the contents.
Commands are :
- List content of current directory,
- Next page (next 16 items)
- Preventions page (previous 16 items)
- Navigate to directory
- Mount Disk Image and reset to 0xC600 to execute boot the disk
Using the same approach, in a near future SmartDisk setting will be exposed to Smartloader, as well as Smartport image mounted for IIGS
The performance of the new version (0.37) are very good
The new release will be available soon after some tests.
Hope you will enjoy it.
Vincent