• SmartPort Query

    From I am Rob@21:1/5 to All on Wed Aug 23 01:40:28 2023
    I have come to the conclusion that Smartport in Slot #7 queries each slot for a device in this order:

    Slot 7 Drv 1
    Slot 7 Drv 2
    Slot 4 Drv 1
    Slot 4 Drv 2
    Slot 1 Drv 1
    Slot 1 Drv 2
    Slot 2 Drv 1
    Slot 2 Drv 2
    Slot 3 Drv 1
    Slot 6 Drv 1
    Slot 6 Drv 2
    Slot 3 Drv 2

    for a total of 12 devices. In IIGS emulators, a hard drive disk image is automatically mounted to the next available Slot/Drive. If I have a boot disk in Slot 7 Drv 1, then mount another hard drive, it automatically is inserted as Slot 7 Drv 2 for
    device #2. And the next hard drive is seen as Slot 4 Drv 1, which makes this device #3.

    But on a real IIGS, there may not be a Slot 7 Drv 2 if the volume in Drv 1 is less than 65536 blocks as I believe it is the firmware that sees drive #2.

    Therefore, I believe inserting another hard drive in Slot #4 via SCSI/CFFA/SD should be seen as device #2 instead of device #3.

    If that is the case, then the Smartport in the firmware of Slot #7 would need to keep a translation table somewhere in memory to know that Device #2 is in Slot 4 Drv 1 and not Slot 7 Drv 2.

    Is this the correct assumption, or is it just as simple as the device number being in the order that I laid out above? I am asking what is the arrangement on a real IIGS, and not emulators, as I only have one CFFA card to test this scenario.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Thu Aug 24 01:48:45 2023
    Hi Rob,
    Smartport deals with devices, not slots/drives.
    Is your mapping done once ProDOS 8 is loaded?
    Antoine

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Thu Aug 24 06:55:46 2023
    Hi Rob,
    Smartport deals with devices, not slots/drives.
    Is your mapping done once ProDOS 8 is loaded?
    Antoine

    Right. But even the Smartport would need to use the softswitches to access a slot card. Which should mean there has to be a mapping of some kind to know which slot a device is in. I have come across an instance where it would be a benefit to be able
    to translate between the two.

    As far as I know the mapping has nothing to do with Prodos 8. If you follow the routine at $C70D (entry to the Smartport), it ends in COP 82. This co-processor routine must have a routine to map a slot to a device number.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Thu Aug 24 06:58:32 2023
    Hi Rob,
    Smartport deals with devices, not slots/drives.
    Is your mapping done once ProDOS 8 is loaded?
    Antoine
    Right. But even the Smartport would need to use the softswitches to access a slot card. Which should mean there has to be a mapping of some kind to know which slot a device is in. I have come across an instance where it would be a benefit to be able to
    translate between the two.

    As far as I know the mapping has nothing to do with Prodos 8. If you follow the routine at $C70D (entry to the Smartport), it ends in COP 82. This co-processor routine must have a routine to map a slot to a device number.

    I should add that the SmartPort device number does not match Prodos device table at $BF30.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to I am Rob on Thu Aug 24 18:52:06 2023
    On Thursday, August 24, 2023 at 6:58:34 AM UTC-7, I am Rob wrote:
    Hi Rob,
    Smartport deals with devices, not slots/drives.
    Is your mapping done once ProDOS 8 is loaded?
    Antoine
    Right. But even the Smartport would need to use the softswitches to access a slot card. Which should mean there has to be a mapping of some kind to know which slot a device is in. I have come across an instance where it would be a benefit to be able
    to translate between the two.

    As far as I know the mapping has nothing to do with Prodos 8. If you follow the routine at $C70D (entry to the Smartport), it ends in COP 82. This co-processor routine must have a routine to map a slot to a device number.
    I should add that the SmartPort device number does not match Prodos device table at $BF30.

    ProDOS-8 2.0.x (and unofficial 2.4 and FX) construct an internal mapping from ProDOS unit number (the things listed in DEVLST at $BF30, which encode the mapped slot/drive, which is exposed via BASIC.SYSTEM but also needed for the DEVADR table at $BF10)
    to the SmartPort device number. This mapping is not exposed externally, and the location in memory changes from version to version of ProDOS. When you make an MLI call with a unit number ProDOS will consult the table to figure out what device number to
    use for the SmartPort call. In the ProDOS sources the table is spunit (and also spvectlo/spvecthi).

    ProDOS 1.2...1.9 mirror a 3rd and 4th device in S5 to S2,D1/2 only, and leave DEVADR entries pointing at $C5xx. There's no need for a table, just hardcoded logic.

    That's the only Slot/Drive to SmartPort device number mapping I'm aware of, but I'm still a n00b. Apologies if this is off topic.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Thu Aug 24 21:57:14 2023
    Hi Rob,
    Smartport deals with devices, not slots/drives.
    Is your mapping done once ProDOS 8 is loaded?
    Antoine
    Right. But even the Smartport would need to use the softswitches to access a slot card. Which should mean there has to be a mapping of some kind to know which slot a device is in. I have come across an instance where it would be a benefit to be
    able to translate between the two.

    As far as I know the mapping has nothing to do with Prodos 8. If you follow the routine at $C70D (entry to the Smartport), it ends in COP 82. This co-processor routine must have a routine to map a slot to a device number.
    I should add that the SmartPort device number does not match Prodos device table at $BF30.
    ProDOS-8 2.0.x (and unofficial 2.4 and FX) construct an internal mapping from ProDOS unit number (the things listed in DEVLST at $BF30, which encode the mapped slot/drive, which is exposed via BASIC.SYSTEM but also needed for the DEVADR table at $BF10)
    to the SmartPort device number. This mapping is not exposed externally, and the location in memory changes from version to version of ProDOS. When you make an MLI call with a unit number ProDOS will consult the table to figure out what device number to
    use for the SmartPort call. In the ProDOS sources the table is spunit (and also spvectlo/spvecthi).

    ProDOS 1.2...1.9 mirror a 3rd and 4th device in S5 to S2,D1/2 only, and leave DEVADR entries pointing at $C5xx. There's no need for a table, just hardcoded logic.

    That's the only Slot/Drive to SmartPort device number mapping I'm aware of, but I'm still a n00b. Apologies if this is off topic.

    That is incorrect. Prodos does not know anything about SmartPort and vice versa. When you do a status call with SmartPort, there is no interaction with Prodos and there are no calls made by Prodos to the SmartPort. The call to the SmartPort uses the
    same logic as Prodos, but they are not connected.

    The only device numbers that are used in the Smartport are for slots 5 and 7 (device numbers being 50 and 70). But these device numbers are for finding the built-in SmartPort whereas the device number for Prodos are for the external slots. Eventually
    though, the SmartPort has to access the external slots where the SCSI/SD/CFFA card is with the hard drive connected. Therefore a device number assigned by the SmartPort needs to be mapped to a slot where a compatible SmartPort device is found. You can
    have a SCSI card in slot 7 and slot 2, skipping slots 4, 5 and 6, but the SmartPort assigns device number of 1 and 2 for those two used slots. Therefore a table has to be saved somewhere in memory to match a device number with the slot so the correct
    softswitches can be accessed for that device.

    I am trying to locate that table in memory.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kent Dickey@21:1/5 to gids.rs@sasktel.net on Sat Aug 26 02:53:09 2023
    In article <3d788c73-abbf-40a4-930d-1a2e0830ef38n@googlegroups.com>,
    I am Rob <gids.rs@sasktel.net> wrote:
    That's the only Slot/Drive to SmartPort device number mapping I'm aware o= >f, but I'm still a n00b. Apologies if this is off topic.

    That is incorrect. Prodos does not know anything about SmartPort and vice = >versa. When you do a status call with SmartPort, there is no interaction w= >ith Prodos and there are no calls made by Prodos to the SmartPort. The cal= >l to the SmartPort uses the same logic as Prodos, but they are not connecte= >d.

    The only device numbers that are used in the Smartport are for slots 5 and = >7 (device numbers being 50 and 70). But these device numbers are for findi= >ng the built-in SmartPort whereas the device number for Prodos are for the = >external slots. Eventually though, the SmartPort has to access the externa= >l slots where the SCSI/SD/CFFA card is with the hard drive connected. Ther= >efore a device number assigned by the SmartPort needs to be mapped to a slo= >t where a compatible SmartPort device is found. You can have a SCSI card i= >n slot 7 and slot 2, skipping slots 4, 5 and 6, but the SmartPort assigns d= >evice number of 1 and 2 for those two used slots. Therefore a table has to=
    be saved somewhere in memory to match a device number with the slot so the= correct softswitches can be accessed for that device.

    I am trying to locate that table in memory.

    Devices which support Smartport need to support a ProDOS entry point as
    well, where the ProDOS entry point is $Cx0A and Smartport is at $Cx0D.

    The table you are interested in is handled by ProDOS 8 in the System Global Page at $BF10-$BF2F. It contains the ProDOS entry points for each device, indexed for slot 1...7 and Drive 1...2 (so 14 total devices supported).
    For a IIgs, slot 5 goes to $C50A. Slot 6 (for a Disk II) goes to $D000.
    When $D000 is called, code there interprets the ProDOS values in ZP and effectively calls RWTS and reads the block indicated.
    And for KEGS with 7 devices in slot 7, slot 7 drives 1 and 2 point to
    $C70A, but the remapped devices are in other slots and go to $FD08.
    The ProDOS driver at $FD08 converts the ProDOS call (cmd at $42, unit at
    $43, buffer at $44,45 and block at $46,$47) into a Smartport compatible
    format and jumps to the address it pulls from $FD6E,X and $FD7D,X where
    X = Unit >> 4. So ProDOS will make Smartport calls, and this is how it
    handles more than 2 devices per slot. This is internal to ProDOS 8.
    The addresses I gave are for ProDOS 2.0.3 which is what I run usually.

    Kent

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Fri Aug 25 21:05:26 2023
    Devices which support Smartport need to support a ProDOS entry point as well, where the ProDOS entry point is $Cx0A and Smartport is at $Cx0D.

    The table you are interested in is handled by ProDOS 8 in the System Global Page at $BF10-$BF2F. It contains the ProDOS entry points for each device, indexed for slot 1...7 and Drive 1...2 (so 14 total devices supported).
    For a IIgs, slot 5 goes to $C50A. Slot 6 (for a Disk II) goes to $D000.
    When $D000 is called, code there interprets the ProDOS values in ZP and effectively calls RWTS and reads the block indicated.
    And for KEGS with 7 devices in slot 7, slot 7 drives 1 and 2 point to
    $C70A, but the remapped devices are in other slots and go to $FD08.
    The ProDOS driver at $FD08 converts the ProDOS call (cmd at $42, unit at $43, buffer at $44,45 and block at $46,$47) into a Smartport compatible format and jumps to the address it pulls from $FD6E,X and $FD7D,X where
    X = Unit >> 4. So ProDOS will make Smartport calls, and this is how it handles more than 2 devices per slot. This is internal to ProDOS 8.
    The addresses I gave are for ProDOS 2.0.3 which is what I run usually.

    Thanks for replying Kent.

    The thing is, Prodos is not being called to get SmartPort information. I am using the SmartPort Commander from OpenApple January 1987 which calls $C70D directly. We can skip slot 5 for now.

    The routine is just

    JSR $C70D
    DFB 00 ; command
    DW Parm_List
    RTS

    PARM_LIST DFB 3 ; # of parms
    DFB 0 ; unit #
    DW CTRL_LIST
    DFB 0 ; sub command

    CTRL_LIST DFB 00

    As a memory dump, it is just:

    300: 20 0D C7 00 07 03 60 03 00 0C 03 00 00

    If this is called directly, it will return the number of devices for slot #7 at $030C. Is it maybe just an emulator thing? This routine works in Sweet16, GSPort and Kegs, although the number of devices returned is different for each emulator. But
    still, are the emulators accessing the table in Prodos? They shouldn't be.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Fri Aug 25 21:15:08 2023
    The thing is, Prodos is not being called to get SmartPort information. I am using the SmartPort Commander from OpenApple January 1987 which calls $C70D directly. We can skip slot 5 for now.

    The routine is just

    JSR $C70D
    DFB 00 ; command
    DW Parm_List
    RTS

    PARM_LIST DFB 3 ; # of parms
    DFB 0 ; unit #
    DW CTRL_LIST
    DFB 0 ; sub command

    CTRL_LIST DFB 00

    As a memory dump, it is just:

    300: 20 0D C7 00 07 03 60 03 00 0C 03 00 00

    If this is called directly, it will return the number of devices for slot #7 at $030C. Is it maybe just an emulator thing? This routine works in Sweet16, GSPort and Kegs, although the number of devices returned is different for each emulator. But still,
    are the emulators accessing the table in Prodos? They shouldn't be.

    I just realized that this can't be an emulator thing either as the OpenApple SmartPort Commander was written for the actual IIGS. So should work on real hardware. The last instruction in ROM at $C70D is a COP 81.

    Is there a ROM dump somewhere for the co-processor that handles this call?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kent Dickey@21:1/5 to gids.rs@sasktel.net on Sat Aug 26 13:39:46 2023
    In article <57208c2d-251c-439a-bede-e8d2ef6c0d45n@googlegroups.com>,
    I am Rob <gids.rs@sasktel.net> wrote:

    Devices which support Smartport need to support a ProDOS entry point as
    well, where the ProDOS entry point is $Cx0A and Smartport is at $Cx0D.

    The table you are interested in is handled by ProDOS 8 in the System Global >> Page at $BF10-$BF2F. It contains the ProDOS entry points for each device,
    indexed for slot 1...7 and Drive 1...2 (so 14 total devices supported).
    For a IIgs, slot 5 goes to $C50A. Slot 6 (for a Disk II) goes to $D000.
    When $D000 is called, code there interprets the ProDOS values in ZP and
    effectively calls RWTS and reads the block indicated.
    And for KEGS with 7 devices in slot 7, slot 7 drives 1 and 2 point to
    $C70A, but the remapped devices are in other slots and go to $FD08.
    The ProDOS driver at $FD08 converts the ProDOS call (cmd at $42, unit at
    $43, buffer at $44,45 and block at $46,$47) into a Smartport compatible
    format and jumps to the address it pulls from $FD6E,X and $FD7D,X where
    X = Unit >> 4. So ProDOS will make Smartport calls, and this is how it
    handles more than 2 devices per slot. This is internal to ProDOS 8.
    The addresses I gave are for ProDOS 2.0.3 which is what I run usually.

    Thanks for replying Kent.

    The thing is, Prodos is not being called to get SmartPort information.
    I am using the SmartPort Commander from OpenApple January 1987 which
    calls $C70D directly. We can skip slot 5 for now.

    The routine is just

    JSR $C70D
    DFB 00 ; command
    DW Parm_List
    RTS

    PARM_LIST DFB 3 ; # of parms
    DFB 0 ; unit #
    DW CTRL_LIST
    DFB 0 ; sub command

    CTRL_LIST DFB 00

    As a memory dump, it is just:

    300: 20 0D C7 00 07 03 60 03 00 0C 03 00 00

    If this is called directly, it will return the number of devices for
    slot #7 at $030C. Is it maybe just an emulator thing? This routine
    works in Sweet16, GSPort and Kegs, although the number of devices
    returned is different for each emulator. But still, are the emulators >accessing the table in Prodos? They shouldn't be.

    It's confusing if you post multiple messages.

    Calling $C70D is the Smartport firmware entry point for a device in slot
    7 which supports Smartport calls. If you put a RamFAST SCSI in slot 7,
    then that entry point will work and it will lost all the mountable
    volumes on that SCSI card.

    Let's back up. What card do you have in slot 7?

    Emulators simply support this type of entry point to provide disk images
    in an easy way that ProDOS fully understands. Unless you have a
    particular interest in emulators and how they work, you can ignore
    emulators.

    You keep mentioning COP $82, but that's something only you are seeing,
    so you'll have to be more specific. COP $82 has nothing to do with
    Smartport in general, nothing to do with the KEGS emulator in specific,
    and I suspect it isn't really there.

    I've explained how ProDOS 2.0.1 and later automatically remap
    devices--if a slot 7 smartport-compatible device has 7 volumes, ProDOS
    2.0.01 will remap devices 3-7 to appear to be in other slots, since it
    knows which slots are really empty. But on ProDOS versions before that, devices like RamFAST would peek into the $BF10-$BF2F ProDOS device table
    and insert their extra volumes as other slots, say slot 4 or slot 1.
    This was a bad idea since multiple cards had no good way to prevent from stomping all over each other, so most cards which could do this had a
    way to disable it (and you should disable it, and use ProDOS 2.0.1 and
    later, ProDOS 2.0.3 was the last official release).

    Kent

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Sat Aug 26 20:55:10 2023
    It's confusing if you post multiple messages.

    I apologize. There is no "edit" button. I am using google groups.


    Calling $C70D is the Smartport firmware entry point for a device in slot
    7 which supports Smartport calls. If you put a RamFAST SCSI in slot 7,
    then that entry point will work and it will lost all the mountable
    volumes on that SCSI card.

    Don't have a monitor for my real IIGS at the moment, so makes it hard to cross-check the firmware routines with the emulators. So am using Sweet16, GSPlus and Kegs.
    I am assuming that the SmartPort software Protocol is part of ROM. We can ignore the external hardware Smartport connections. Bit even without any cards in any slots, the SmartPort should still be available to be called, correct? This should return a "
    No devices available" or an error of some sort.


    Let's back up. What card do you have in slot 7?

    Right now, just using the emulators mentioned above. But if my reall IIGS was up and running, it would have either the CFFA v2.0 or CFFA3000 in slot #7.



    Emulators simply support this type of entry point to provide disk images
    in an easy way that ProDOS fully understands. Unless you have a
    particular interest in emulators and how they work, you can ignore emulators.

    No. I am more trying to understand the software from the Open Apple magazine that accesses the SmartPort and displays each volumes information.


    You keep mentioning COP $82, but that's something only you are seeing,
    so you'll have to be more specific. COP $82 has nothing to do with
    Smartport in general, nothing to do with the KEGS emulator in specific,
    and I suspect it isn't really there.

    Again, I am using emulators, but the ROM's (01 and 03) should have been ripped from a real IIGS. If you follow the code starting at $C70D in Kegs, just before the RTS there is a COP 81. This shows up in all the emulators. I may have misinterpreted
    what was being pulled off the stack and pushed back on to know where the RTS actually returns to. But my understanding is that the return address is after the 3 bytes that follow the JSR $C70D.


    I've explained how ProDOS 2.0.1 and later automatically remap
    devices--if a slot 7 smartport-compatible device has 7 volumes, ProDOS 2.0.01 will remap devices 3-7 to appear to be in other slots, since it
    knows which slots are really empty. But on ProDOS versions before that, devices like RamFAST would peek into the $BF10-$BF2F ProDOS device table
    and insert their extra volumes as other slots, say slot 4 or slot 1.
    This was a bad idea since multiple cards had no good way to prevent from stomping all over each other, so most cards which could do this had a
    way to disable it (and you should disable it, and use ProDOS 2.0.1 and later, ProDOS 2.0.3 was the last official release).

    Right. I understand how Prodos works. I am trying to link how the software from the Open Apple magazine ties into Prodos.
    The software uses this calculation to find the SmartPort entry.

    AD=49152+7*256 ; $C700
    SM=AD+peek(AD+255)+3 ; $C7FF

    SM then has a value of $C70D.

    At this point, the software is the same for both real IIGS and emulators. I am unable though to confirm what is at $C7FF on a real IIGS. I am assuming it is the value $0A, then when 3 is added to it, it becomes $0D as well. This should mean that the
    SmartPort entry point on a real IIGS is at $C70D, correct?

    But is $C70D only available when a SCSI/SD/CFFA card is installed? I always thought the SmartPort was built into ROM on the IIGS. This might be where my confusion is.

    But still. it nags me that the OpenApple software makes no reference to calling Prodos in any way. If needed, I can post the software.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Sat Aug 26 23:05:44 2023
    No. I am more trying to understand the software from the Open Apple magazine that accesses the SmartPort and displays each volumes information.
    You keep mentioning COP $82, but that's something only you are seeing,
    so you'll have to be more specific. COP $82 has nothing to do with Smartport in general, nothing to do with the KEGS emulator in specific, and I suspect it isn't really there.

    I am using emulators, but the ROM's (01 and 03) should have been ripped from a real IIGS. If you follow the code starting at $C70D in Kegs, just before the RTS
    there is a COP 81. This shows up in all the emulators. I may have misinterpreted what was being pulled off the stack and pushed back on to know where the RTS actually > returns to. But my understanding is that the return address is after the 3 bytes
    that follow the JSR $C70D.

    My mistake. I incorrectly assumed the C700 firmware was part of the ROM image that the emulators use. So I didn't check with the other emulator firmwares to compare the $C70D routine. It turns out that the COP 81 is only used in Sweet16.

    But the confusion still remains as to where the SmartPort call taps into Prodos.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Oliver Schmidt@21:1/5 to All on Sun Aug 27 10:17:29 2023
    Hi Kent,

    The table you are interested in is handled by ProDOS 8 in the System Global >Page at $BF10-$BF2F.

    My understanding is that for the SmartPort implementation built into
    the IIgs, there's another indirection through a table at $E1/0FC0.

    Regards,
    Oliver

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From I am Rob@21:1/5 to All on Sun Aug 27 16:47:25 2023
    The table you are interested in is handled by ProDOS 8 in the System Global >Page at $BF10-$BF2F.
    My understanding is that for the SmartPort implementation built into
    the IIgs, there's another indirection through a table at $E1/0FC0.

    If that is the case, then I can now see how Prodos might initialize that table. Thanks for that Oliver. I can now follow the code to see where it leads.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kent Dickey@21:1/5 to gids.rs@sasktel.net on Mon Aug 28 02:38:29 2023
    In article <a07798c6-9dcb-451d-b6bd-3467431f5e0an@googlegroups.com>,
    I am Rob <gids.rs@sasktel.net> wrote:
    I've explained how ProDOS 2.0.1 and later automatically remap
    devices--if a slot 7 smartport-compatible device has 7 volumes, ProDOS
    2.0.01 will remap devices 3-7 to appear to be in other slots, since it
    knows which slots are really empty. But on ProDOS versions before that,
    devices like RamFAST would peek into the $BF10-$BF2F ProDOS device table
    and insert their extra volumes as other slots, say slot 4 or slot 1.
    This was a bad idea since multiple cards had no good way to prevent from
    stomping all over each other, so most cards which could do this had a
    way to disable it (and you should disable it, and use ProDOS 2.0.1 and
    later, ProDOS 2.0.3 was the last official release).

    Right. I understand how Prodos works. I am trying to link how the
    software from the Open Apple magazine ties into Prodos.
    The software uses this calculation to find the SmartPort entry.

    AD=49152+7*256 ; $C700
    SM=AD+peek(AD+255)+3 ; $C7FF

    SM then has a value of $C70D.

    At this point, the software is the same for both real IIGS and
    emulators. I am unable though to confirm what is at $C7FF on a real
    IIGS. I am assuming it is the value $0A, then when 3 is added to it, it >becomes $0D as well. This should mean that the SmartPort entry point on
    a real IIGS is at $C70D, correct?

    But is $C70D only available when a SCSI/SD/CFFA card is installed? I
    always thought the SmartPort was built into ROM on the IIGS. This might
    be where my confusion is.

    But still. it nags me that the OpenApple software makes no reference to >calling Prodos in any way. If needed, I can post the software.

    I'm going to state again, Smartport is two different things:

    1) The disk port on the back of a IIgs and //c which allows plugging in
    3.5" and 5.25" floppy drives (and other things).

    2) A software convention for OS'es and hardware that lets old OS'es use
    new hardware without needing special drivers. I call this the
    Smartport firmware interface. This firmware lives in the
    $Cnxx slot space. 5.25" floppies DO NOT support this interface.
    3.5" floppy controllers, SCSI controllers, any mass storage
    controller, and emulators wanting to support "hard drive" partitions
    do support it. This is NOT in the ROM of the system, it's on
    the plug-in card itself (the card ROM).

    Smartport Firmware is at a level below ProDOS, but above hardware. $Cx0D
    is one of the Smartport firmware entry points (the other, $Cx0A is a similar interface, but more limited, and called the ProDOS firmware entry point,
    but it's just a simplified version that's easier for ProDOS to support,
    and it only support two drives in this slot).

    On a IIgs, the 3.5" controller is in slot 5, the IIgs defaults to making
    slot 5 map to the internal ROM and features. So the ROM of the machine provides the code at $C5xx. And that code DOES support the Smartport
    Firmware, so that ProDOS can use the 3.5" drives. If you make slot 5
    "Your Card", then this goes away, and you cannot access the 3.5" drives anymore.

    The description of this firmware interface is the Apple IIgs Firmware Reference, Chapter 7 "Smartport Firmware". This is the documentation for
    how plug-in cards should work to allow OS'es to call $Cn0D and $Cn0A
    to make the card work with ProDOS and GSOS. This says how OS'es can
    detect a card supports the Smartport Firmware (which involves reading
    $CnFF), and what cards need to support to be compatible.
    Really, you should read that, it should make lots of things clearer.

    So, if you are using a "Smartport Exerciser", this is calling $Cn0D
    entry points for all cards it finds, and it does not need to make any
    ProDOS calls at all, or look at any ProDOS. You could make a Smartport Exerciser which ran under DOS 3.3. If you plug a SCSI card (or CFFA3000,
    or whatever) into a II+, you could run that Smartport Exerciser under
    DOS 3.3 and see the mounted volumes (well, it may not work, since this
    is running code on the card, and that card may require a 65c02 or something).

    In KEGS, the $C7xx space is not ROM, it's a fake card KEGS creates. It's emulating a plug-in card providing hard drive access in slot 7. KEGS, out
    of laziness, just copies the $C5xx ROM to this area, since the built-in
    3.5" drive is a Smartport-compatible device. I don't know what Sweet16
    does, and it shouldn't matter.

    On a real IIgs, there is nothing at $C7FF. Slot 7 on a IIgs defaults to
    "Your card", and if you don't have a card in slot 7, it will be nothing.
    If you change the settings to make it "Appletalk in slot 7", then it will
    be the Appletalk ROM in slot 7--and that does not have Smartport Firmware.

    Kent

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)