Does any one know how the SmartPort assigns a slot/drive to a device
number? Is it just as simple as using a look-up table in the order of:
Dev 1 = Slot 7 Drv 1
Dev 2 = Slot 7 Drv 2
Dev 3 = Slot 4 Drv 1
Dev 4 = Slot 4 Drv 2
Dev 5 = Slot 1 Drv 1
Dev 6 = Slot 1 Drv 2
Dev 7 = Slot 2 Drv 1
Dev 8 = Slot 2 Drv 2
Dev 9 = Slot 3 Drv 1
Dev 10 = Slot 6 Drv 1
Dev 11 = Slot 6 Drv 2
Dev 12 = Slot 3 Drv 2
or is there a translation table stored somewhere in memory?
If Kent will respond, I would like to know how you handled the COP 82 >instruction at the end of the $C70D routine (entry to SmartPort) in your
Kegs emulator,
Does any one know how the SmartPort assigns a slot/drive to a device >number? Is it just as simple as using a look-up table in the order of:
Dev 1 = Slot 7 Drv 1
Dev 2 = Slot 7 Drv 2
Dev 3 = Slot 4 Drv 1
Dev 4 = Slot 4 Drv 2
Dev 5 = Slot 1 Drv 1
Dev 6 = Slot 1 Drv 2
Dev 7 = Slot 2 Drv 1
Dev 8 = Slot 2 Drv 2
Dev 9 = Slot 3 Drv 1
Dev 10 = Slot 6 Drv 1
Dev 11 = Slot 6 Drv 2
Dev 12 = Slot 3 Drv 2
or is there a translation table stored somewhere in memory?
If Kent will respond, I would like to know how you handled the COP 82 >instruction at the end of the $C70D routine (entry to SmartPort) in your >Kegs emulator,Smartport is two things: a physical port you can plug 3.5", 5.25", etc. drives into, and a software convention so OS's can communicate with devices they may not have a "driver" for.
The software convention: If the $Cnxx ROM space for a slot appears to be bootable, and $CnFF=0A, then it supports Smartport calls at $C70D, and ProDOS calls at $C70A. The ProDOS entry point at $C70A supports just
two devices and supports just 65535 blocks, but the $C70D "Smarport" entry point supports many more devices, I think 127, and can support up to
24-bit block numbers (or 32-bit block numbers, for Extended Smartport).
ProDOS 8 can only support two devices per "slot", so it remaps drives to "virtual" slots. If slot 1 is a printer, for example, with no drives,
then ProDOS 8 can map 2 drives from another slot to be s1d1 and s1d2.
In this way, ProDOS 8 can support up to 14 devices, but s3d2 can only be /RAM.
I don't know off the top of my head how ProDOS 8 manages this, but I do
know it was constantly changing, and the latest non-Apple ProDOS 2.5x does it
differently than any official release. Technote ProDOS #20 talks about
this remapping, and ProDOS Technote #23 talks about the versions of
ProDOS 8, which seems to say ProDOS 2.0.1 was the first to automatically
do this remapping.
ProDOS 16/GSOS doesn't have to deal with this 2-devices-per-slot restriction,
and can support lots more devices (I don't know the actual limit offhand).
KEGS doesn't use COP $82. KEGS does something really dumb, and compares
all instruction fetch addresses to see if it is to $00C70D, and if it is, it calls do_c70d() in smartport.c. No matter what code you try to place at $C70D, KEGS will interpret it as a smartport call to s7dx devices if you execute at that address. And this is done for $C700 and $C70A as well.
So "PR#7" in KEGS runs no code from the $C700 space at all, it doesn't matter
what's there. I have plans to change this, but it's not a high priority.
ProDOS has an internal mapping table which moved around in earlier versions of ProDOS, and whose format changed in 2.5. Smart Port devices are numbered 1, 2, 3, ... so they can live anywhere in the slot space from ProDOS's point of view.
ProDOS has an internal mapping table which moved around in earlier versions of ProDOS, and whose format changed in 2.5. Smart Port devices are numbered 1, 2, 3, ... so they can live anywhere in the slot space from ProDOS's point of view.
ProDOS has an internal mapping table which moved around in earlier versions of ProDOS,and whose format changed in 2.5. Smart Port devices are numbered 1, 2, 3, ... so they can
live anywhere in the slot space from ProDOS's point of view.
Is there a table that matches the device number with the slots somewhere in memory? Or is
there some math calculation that is used?
Normally there would be a device in slot #7 as the boot device and it would be designated
Device #1. But another device card can be in any of the other slots supported by the
SmartPort Protocol as Device #2. Therefore the assumption has to be made that there is a
table some where that matches what slot device #2 is in. I am trying to locate that table.
The software that I am trying to understand is from OpenApple 1987. It makes no calls to
Prodos, yet it can report the number of devices and all their information through the
SmartPort Protocol at $C70D. What is even more bizarre, is that it recognizes and reports
the correct number of blocks on a 2 gig disk image whether it be formatted to Prodos or
HFS. This information is not stored in a volumes header.
Is the SmartPort Protocol built into the IIGS ROM, or is it in a slot cards firmware, such
as a SCSI card or CFFA3000?
ProDOS has an internal mapping table which moved around in earlier versions of ProDOS,and whose format changed in 2.5. Smart Port devices are numbered 1, 2, 3, ... so they can
live anywhere in the slot space from ProDOS's point of view.
Is there a table that matches the device number with the slots somewhere in memory? Or is
there some math calculation that is used?
Normally there would be a device in slot #7 as the boot device and it would be designated
Device #1. But another device card can be in any of the other slots supported by the
SmartPort Protocol as Device #2. Therefore the assumption has to be made that there is a
table some where that matches what slot device #2 is in. I am trying to locate that table.
The software that I am trying to understand is from OpenApple 1987. It makes no calls to
Prodos, yet it can report the number of devices and all their information through the
SmartPort Protocol at $C70D. What is even more bizarre, is that it recognizes and reports
the correct number of blocks on a 2 gig disk image whether it be formatted to Prodos or
HFS. This information is not stored in a volumes header.
Is the SmartPort Protocol built into the IIGS ROM, or is it in a slot cards firmware, suchShort answer: both. It's built into the card's firmware. The IIgs has
as a SCSI card or CFFA3000?
it built-in if slot 5 is set to Smart Port.
I think you're referring to the January 1987 article on pages
2.89-2.92. Is that right?
The article talks about various peripherals that support the Smartport protocol converter. Could be an Apple 3.5 Controller (LIRON) card that supports only the UniDisk 3.5, an Apple Memory Expansion (slinky) board,
an Apple SCSI card, or the IIgs "slot 5" Smartport protocol converter.
Since then, third party product such as the CFFA also support the
Smartport protocol converter.
All of these products maintain the Smartport device list internally and
in their own way. This device-list is separate from the ProDOS device
list.
Also, there is no guarantee that there is a Smartport
protocol-supporting card in slot #7. The Open-Apple program scans the
slots in lines 100-200 (page 2.90b).
The Open-Apple program is finding out all reported information from the discovered Smartport protocol-converter-supporting peripheral by
examining the firmware ID bytes. It then calls the Smartport
entry-point in the card's $Csxx firmware.
Short answer: both. It's built into the card's firmware. The IIgs hasProDOS has an internal mapping table which moved around in earlier versions of ProDOS,and whose format changed in 2.5. Smart Port devices are numbered 1, 2, 3, ... so they can
live anywhere in the slot space from ProDOS's point of view.
Is there a table that matches the device number with the slots somewhere in memory? Or is
there some math calculation that is used?
Normally there would be a device in slot #7 as the boot device and it would be designated
Device #1. But another device card can be in any of the other slots supported by the
SmartPort Protocol as Device #2. Therefore the assumption has to be made that there is a
table some where that matches what slot device #2 is in. I am trying to locate that table.
The software that I am trying to understand is from OpenApple 1987. It makes no calls to
Prodos, yet it can report the number of devices and all their information through the
SmartPort Protocol at $C70D. What is even more bizarre, is that it recognizes and reports
the correct number of blocks on a 2 gig disk image whether it be formatted to Prodos or
HFS. This information is not stored in a volumes header.
Is the SmartPort Protocol built into the IIGS ROM, or is it in a slot cards firmware, such
as a SCSI card or CFFA3000?
it built-in if slot 5 is set to Smart Port.
Disregard the slot 5 Smartport. I am more interested in the slot 7 Smartport with 12
devices and support for 2 gig volumes.
I think you're referring to the January 1987 article on pages
2.89-2.92. Is that right?
Don't know. The software just has the date in the REM statements.
The article talks about various peripherals that support the Smartport
protocol converter. Could be an Apple 3.5 Controller (LIRON) card that
supports only the UniDisk 3.5, an Apple Memory Expansion (slinky) board,
an Apple SCSI card, or the IIgs "slot 5" Smartport protocol converter.
Since then, third party product such as the CFFA also support the
Smartport protocol converter.
All of these products maintain the Smartport device list internally and
in their own way. This device-list is separate from the ProDOS device
list.
I have trouble with statements like these as this makes the assumption that the SmartPort
device has RAM to store the device list. I have checked the screen holes for the order of
the devices. And like you said, the SmartPort device list is separate from the Prodos
device list. Where in RAM is it stored?
Also, there is no guarantee that there is a Smartport
protocol-supporting card in slot #7. The Open-Apple program scans the
slots in lines 100-200 (page 2.90b).
If you check the machine language part of the program, you can see that it calls the
SmartPort at $C70D. But if there is another SCSI card in slot 2, or slot 4, that device
gets assigned device #2. But there has to be a table that indicates which slot device #2
is in. Where is that table or list?
The Open-Apple program is finding out all reported information from the
discovered Smartport protocol-converter-supporting peripheral by
examining the firmware ID bytes. It then calls the Smartport
entry-point in the card's $Csxx firmware.
That is fine if there is only 1 SmartPort device. But a second SmartPort device can be in
any of the other slots supported by SmartPort protocol. The slots checked in order should
be S7D1, S7D2, S4D1, S4D2, S2D1, S2D2, S1D1, S1D2, S3D1, S6D1, S6D2, S3D2. Device #2 can
be in any of the slots after S7D1. Therefore there must be a table to indicate which slot
device #2 is in so that device can be accesssed using that slots softswitches.
Put another way. When device #2 is called by the SmartPort Protocol, there should be a
table somewhere that points to the device in slot 2 instead of slot 4. I have trouble
believing that the slots get scanned every time in the sequence mentioned above to confirm
there is a SmartPort device in that slot. If one were to have 12 devices installed, that
is a lot of wear and tear just to find the slot that the 12th device is in.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 468 |
Nodes: | 16 (2 / 14) |
Uptime: | 18:53:13 |
Calls: | 9,440 |
Calls today: | 3 |
Files: | 13,594 |
Messages: | 6,109,822 |