diff --git a/_pages/docs/technote/ftn08.md b/_pages/docs/technote/ftn08.md index f5bcf12..affc240 100644 --- a/_pages/docs/technote/ftn08.md +++ b/_pages/docs/technote/ftn08.md @@ -2,7 +2,7 @@ layout: 'page' title: 'File Type Note $08 (8) - Auxiliary Types $0000-$3FFF' description: 'Apple II Graphics File' -permalink: '/docs/technote/ftn08/' +permalink: '/docs/technote/ftn/08/' --- diff --git a/_pages/docs/technote/ftn19.md b/_pages/docs/technote/ftn19.md index be02234..8d93b10 100644 --- a/_pages/docs/technote/ftn19.md +++ b/_pages/docs/technote/ftn19.md @@ -2,7 +2,7 @@ layout: 'page' title: 'File Type $19 (25) - All Auxiliary Types' description: 'AppleWorks Data Base File' -permalink: '/docs/technote/ftn19/' +permalink: '/docs/technote/ftn/19/' --- diff --git a/_pages/docs/technote/ftn1a.md b/_pages/docs/technote/ftn1a.md index cff8464..6daafed 100644 --- a/_pages/docs/technote/ftn1a.md +++ b/_pages/docs/technote/ftn1a.md @@ -2,7 +2,7 @@ layout: 'page' title: 'File Type $1A (26) - All Auxiliary Types' description: 'AppleWorks Word Processor File' -permalink: '/docs/technote/ftn1a/' +permalink: '/docs/technote/ftn/1a/' ---

Full Name: AppleWorks Word Processor File
Short Name: AppleWorks diff --git a/_pages/docs/technote/ftn1b.md b/_pages/docs/technote/ftn1b.md index 86a0bca..bc426dd 100644 --- a/_pages/docs/technote/ftn1b.md +++ b/_pages/docs/technote/ftn1b.md @@ -2,7 +2,7 @@ layout: 'page' title: 'File Type $1B (27) - All Auxiliary Types' description: 'AppleWorks Spreadsheet File' -permalink: '/docs/technote/ftn1b/' +permalink: '/docs/technote/ftn/1b/' --- diff --git a/_pages/docs/technote/ftn8.md b/_pages/docs/technote/ftn8.md new file mode 100644 index 0000000..3f74f7c --- /dev/null +++ b/_pages/docs/technote/ftn8.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/ftn/8' +target_url: '/docs/technote/ftn/08/' +--- diff --git a/_pages/docs/technote/iigs017.md b/_pages/docs/technote/iigs017.md index 4f27ca0..a637302 100644 --- a/_pages/docs/technote/iigs017.md +++ b/_pages/docs/technote/iigs017.md @@ -2,6 +2,6 @@ layout: 'redirect' title: '' description: '' -permalink: '/docs/technote/iigs017/' -target_url: '/docs/technote/iigs17/' +permalink: '/docs/technote/iigs/017/' +target_url: '/docs/technote/iigs/17/' --- diff --git a/_pages/docs/technote/iigs17.md b/_pages/docs/technote/iigs17.md index 02cb555..eb960ec 100644 --- a/_pages/docs/technote/iigs17.md +++ b/_pages/docs/technote/iigs17.md @@ -2,7 +2,7 @@ layout: 'page' title: 'Apple IIgs Technical Note #17' description: 'Apple IIgs #17 - Application Memory Management and the MMStartUp User ID' -permalink: '/docs/technote/iigs17/' +permalink: '/docs/technote/iigs/17/' --- diff --git a/_pages/docs/technote/misc02.md b/_pages/docs/technote/misc02.md index 730f7fc..d388a6f 100644 --- a/_pages/docs/technote/misc02.md +++ b/_pages/docs/technote/misc02.md @@ -2,7 +2,7 @@ layout: 'page' title: 'Apple II Miscellaneous Technical Note #2' description: 'Apple II Family Identification Routines 2.2' -permalink: '/docs/technote/misc02/' +permalink: '/docs/technote/misc/02/' --- @@ -32,7 +32,7 @@ I got it off of the archives online. -- AH

Why Identification Routines?

Although we present the Apple II family identification bytes in Apple II Miscellaneous Technical Note #7, many +href="/docs/technote/misc/07/">Apple II Miscellaneous Technical Note #7, many people would prefer a routine they can simply plug into their own program and call. In addition, this routine serves as a small piece of sample code, and there is no reason for you to reinvent the wheel.

@@ -550,7 +550,7 @@ release)

Further Reference


diff --git a/_pages/docs/technote/misc07.md b/_pages/docs/technote/misc07.md index 454af65..1f9a9cb 100644 --- a/_pages/docs/technote/misc07.md +++ b/_pages/docs/technote/misc07.md @@ -2,7 +2,7 @@ layout: 'page' title: 'Apple II Miscellaneous Technical Note #7' description: 'Apple II Family Identification' -permalink: '/docs/technote/misc07/' +permalink: '/docs/technote/misc/07/' --- @@ -118,7 +118,7 @@ correctly before returning from this call.

Further Reference


diff --git a/_pages/docs/technote/smpt01.md b/_pages/docs/technote/smpt01.md new file mode 100644 index 0000000..55082f0 --- /dev/null +++ b/_pages/docs/technote/smpt01.md @@ -0,0 +1,26 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #1' +description: 'SmartPort Introduction' +permalink: '/docs/technote/smartport/01/' +--- + +

Revised by Matt Deatherage (November 1988) +
Written by Mike Askins (November 1985)

+ +

This Technical Note formerly introduced the SmartPort firmware interface.

+ +
+ +

This Note formerly contained a general introduction to the SmartPort +firmware interface. Information on SmartPort as found in the Apple IIe +and IIc is now found in the Apple IIc Technical Reference Manual, Second +Edition.

+ +

For a more complete reference on SmartPort, including information on +Extended SmartPort (for peripherals which can address more than one 64K +bank of memory) and its parameters, please see chapter 7 of the Apple +IIGS Firmware Reference.

+ + +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt02.md b/_pages/docs/technote/smpt02.md new file mode 100644 index 0000000..190fde7 --- /dev/null +++ b/_pages/docs/technote/smpt02.md @@ -0,0 +1,95 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #2' +description: 'SmartPort Calls Updated' +permalink: '/docs/technote/smartport/02/' +--- + +

Revised by Llew Roberts (September 1989) +
Written by Mike Askins (May 1985)

+ +

This Technical Note documents SmartPort call information which is notfound in the descriptions of SmartPort in the Apple IIGS FirmwareReference and the Apple IIc Technical Reference Manual, Second Edition. The device-specific information which had been included in this Note isnow found in these manuals.

+ +

Changes since November 1988: Added diagram and information on vendor ID numbers.

+ +
+ + +

STATUS Calls

+ +

A STATUS call with unit number = $00 and status code = $00 is a request to return the status of the SmartPort host, as opposed to unit numbers greater than zero which return the status of individual devices. The number of devices as well as the current interrupt status is returned. The format of the status list returned is illustrated in Figure 1.

+ +
+
+           +------------------+
+    Byte 0 |   Device Count   |
+           +------------------+
+    Byte 1 | Interrupt Status |
+           +------------------+
+    Byte 2 |      Vendor      |   $0000          Vendor unknown
+           +                  +---$0001          Apple Computer, Inc.
+    Byte 3 |        ID        |   $0002-$FFFF    Third-Party Vendor
+           +------------------+
+    Byte 4 |    Interface     |   _____|___________________|_____
+           +                  +--|F|E|D|C|B|A|9|8|7|6|5|4|3|2|1|0|
+    Byte 5 |     Version      |  |_______|_______________|_______|
+           +------------------+  |       |               |
+    Byte 6 |    Reserved      |  |Major  |    Minor      |$A=Alpha
+           +------------------+  |Release|    Release    |$B=Beta
+    Byte 7 |    Reserved      |                          |$E=Experimental
+           +------------------+                          |$0=Final
+
+              Figure 1 - Host General Status Return Information
+
+
+ +

Stat_list

+ +
+
byte 0
Number of devices
+
byte 1
Interrupt Status (If bit 6 is set, then no interrupt)
+
bytes 2-3
Driver manufacturer (were Reserved prior to May 1988): +
$0000: Undetermined +
$0001: Apple +
$0002-$FFFF: Third-party driver
+
bytes 4-5
Interface Version
+
bytes 6-7
Reserved (must be $0000)
+
+ +

The Number of devices byte tells the caller the total number of devices hooked to this slot or port.

+ +

The Interrupt Status byte is used by programs which try to determine if the SmartPort was the source of an interrupt. If bit 6 of this byte is clear, there is a device (or devices) in the chain that require interrupt service. + +You cannot use this value to determine which device in the chain is actually interrupting. Your interrupt handler, having determined that a SmartPort interrupt has occurred, must poll each device on the chain to find out which device requires service. The UniDisk 3.5 and Memory Expansion Card do not generate interrupts, so in these cases, this byte has bit 6 set.

+ +

The vendor ID number may be used to determine the manufacturer of a specific SmartPort peripheral interface card, a useful piece of information when dealing with device-specific calls. Contact Apple Developer Technical Support if you require a specific vendor ID number. The version word follows the +SmartPort Interface Version definition described later in this Note.

+ + +

CONTROL Codes

+ +

Before May 1988, control code $04 was defined as device-specific. It is now defined as EJECT, and all SmartPort devices which support removable media must support this call. If a device does not support removable media, it should simply return from this call without an error.

+ +

Note that the Apple II SCSI card firmware was revised in early 1988 to support this change.

+ + +

INIT

+ +

An application should never make an INIT call (SmartPort code $05), since doing so is likely to destroy operating system integrity and may cause media damage as well.

+ +

If you are writing your own operating system (not encouraged) and need to reset all SmartPort devices, the INIT call with unit number = $00 will do just that. Note that SmartPort devices cannot be selectively reset, and INIT must never be made at all with any unit number other than $00.

+ + +

SmartPort Interface Version Definition

+ +

The SmartPort Interface Version definition uses the most significant nibble of the word as the major version number, the next two most significant nibbles as the minor version number, and the least significant nibble as a release indicator:

+ +
+
+    $0 = Final    $A = Alpha    $B = Beta    $E = Experimental
+
+
+ +

Therefore, the interface version word for an experimental SmartPort interface 1.15 would be $115E while the interface version word for SmartPort interface 2.0 would be $2000. GS/OS driver version numbers also follow this definition.

+ +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt03.md b/_pages/docs/technote/smpt03.md new file mode 100644 index 0000000..6f463eb --- /dev/null +++ b/_pages/docs/technote/smpt03.md @@ -0,0 +1,19 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #3' +description: 'SmartPort Bus Architecture' +permalink: '/docs/technote/smartport/03/' +--- + +

Revised by Matt Deatherage (November 1988) +
Written by Mike Askins (March 1985)

+ +

This Technical Note formerly described the SmartPort Bus architecture, but this information is now documented in the Apple IIGS Firmware Reference.

+ +
+ +

Do not be confused by the name "SmartPort Bus" architecture. The information in the Apple IIGS Firmware Reference describes the mechanics of how devices interface with the disk port on a IIGS or IIc and with the UniDisk 3.5 Interface card on a ][+ or IIe. It is not necessary to understand this information to use SmartPort firmware calls, nor do all devices which have SmartPort firmware necessarily have to connect mechanically through the disk port or UniDisk 3.5 Interface card.

+ +

The physical or electrical side of the hardware is called the "SmartPort Bus," while the firmware protocols are called the "SmartPort Interface." Although the term "SmartPort" can refer to either or both parts, it is most often used to refer to the SmartPort Interface. Only those developers who are designing products which will attach to either the IIGS or IIc disk port or to the UniDisk 3.5 Interface card need be concerned with the SmartPort Bus architecture. Software developers need not learn about the SmartPort Bus architecture to use the SmartPort Interface firmware.

+ +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt04.md b/_pages/docs/technote/smpt04.md new file mode 100644 index 0000000..7744fab --- /dev/null +++ b/_pages/docs/technote/smpt04.md @@ -0,0 +1,38 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #4' +description: 'SmartPort Device Types' +permalink: '/docs/technote/smartport/04/' +--- + +

Revised by Matt Deatherage (November 1988) +
Written by Rilla Reynolds (June 1987)

+ +

This Technical Note documents additional device types which the SmartPort firmware recognizes, but which may not be currently documented in the technical reference manuals which cover SmartPort.

+ +
+ +

The following is an updated list of possible SmartPort device types, extended to support an increasing variety of third-party peripheral products. A device type byte is returned as part of the Device Information Block (DIB) from a SmartPort STATUS call ($03).

+ + + + +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt05.md b/_pages/docs/technote/smpt05.md new file mode 100644 index 0000000..3f412ea --- /dev/null +++ b/_pages/docs/technote/smpt05.md @@ -0,0 +1,59 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #5' +description: 'SCSI SmartPort Call Changes' +permalink: '/docs/technote/smartport/05/' +--- + +

Revised by Matt Deatherage and Llew Roberts (November 1990) +
Written by Rilla Reynolds and Matt Deatherage (May 1988)

+ +

This Technical Note describes two CONTROL codes which have changed in +revision C of the Apple II SCSI card firmware.

+ +

Changes since January 1989: Added notes about the Apple II +High-Speed SCSI Card.

+ +
+ +

Revision C of the Apple II SCSI card firmware includes two CONTROL code changes.

+ +

CONTROL code $04, previously defined as FORMAT, is now defined as +EJECT. This change reflects the revised SmartPort requirement that all +devices maintain CONTROL code $04 as EJECT. See SmartPort Technical Note #2, SmartPort Calls +Updated, for more information. CONTROL code $15 is now defined as FORMAT +instead of RESERVED. Note that there are two EJECT calls in this version, +as CONTROL code $26 is still defined as EJECT.

+ +

To determine which version of the SCSI ROM is on any particular Apple +II SCSI Interface Card, issue a $03 SmartPort STATUS call. The revision C +SCSI ROM returns the word $0200. This does not follow the SmartPort +Interface Version scheme described in SmartPort +Technical Note #2. However, future revisions of the Apple II SCSI +card will follow this scheme. Therefore, applications should expect any +SmartPort SCSI firmware to behave as described in this Note if the version +number is $0200 or if it is greater than or equal to $2000. The Apple II +High-Speed SCSI Card returns version $3000 (3.0). + +

To maintain compatibility with the Apple II High-Speed SCSI Card and future +SCSI products, you should use the following guidelines when programming with +the revision C card:

+ + + +

The Apple II SCSI Card firmware was designed to operate with SCSI CD-ROM and +disk drives only; however, the Apple II High-Speed SCSI Card works with most +SCSI devices, including removable drives, scanners, and tape backup units.

+ +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt06.md b/_pages/docs/technote/smpt06.md new file mode 100644 index 0000000..3871e7c --- /dev/null +++ b/_pages/docs/technote/smpt06.md @@ -0,0 +1,27 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #6' +description: 'Apple IIgs SmartPort Errata' +permalink: '/docs/technote/smartport/06/' +--- + +

Revised by Matt Deatherage (November 1990) +
Written by Matt Deatherage (November 1988)

+ +

This Technical Note documents two bugs in the Apple IIgs SmartPort firmware.

+ +

Changes since November 1988: Documented corrections in ROM 03 and an additional ROM 03 bug.

+ +
+ +

Developers should be aware of the following two bugs in the Apple IIgs ROM 01 SmartPort firmware:

+ +
    +
  1. SmartPort accidentally uses locations $57 through $5A on the zero page without saving and restoring them first. There is some confusion as to whether these bytes are used on the absolute zero page or on the caller's direct page. This is a moot point -- SmartPort calls are required to be made from full-emulation mode. This requirement means the emulation bit must be set and the data bank and direct page registers must both be set to zero. The bytes are used on the absolute zero page, as that should be the direct page when SmartPort is called.
  2. + +
  3. If an extended SmartPort CONTROL call is made, the CONTROL list must not start at $FFFE or $FFFF of any bank. The IIgs SmartPort interface does not increment the bank pointer when moving past the two-byte CONTROL list length. If a CONTROL list starts one or two bytes before a bank boundary, SmartPort will incorrectly read the list from the beginning of that bank, instead of the beginning of the next bank.
  4. + + +

    The ROM 03 firmware fixes these bugs; however, it has a bug in the ResetHook device-specific CONTROL call for the Apple 3.5" Drive. With this bug, hook numbers of nine or greater crash the machine. At present, hook numbers in this range are invalid, so this bug should not be a problem.

    + +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt07.md b/_pages/docs/technote/smpt07.md new file mode 100644 index 0000000..0bb299e --- /dev/null +++ b/_pages/docs/technote/smpt07.md @@ -0,0 +1,56 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #7' +description: 'SmartPort Subtype Codes' +permalink: '/docs/technote/smartport/07/' +--- + +

    Written by Matt Deatherage (November 1988)

    + +

    This Technical Note clarifies information about SmartPort subtype codes.

    + +
    + +

    Following is a definition of the SmartPort subtype code as given in the +Apple IIGS Firmware Reference:

    + +
    +
    +_________________________________________________
    +|     |     |     |     |     |     |     |     |
    +|  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
    +|     |     |     |     |     |     |     |     |
    +_________________________________________________
    +   |     |     |     |     |     |     |     |
    +   |     |     |     |_____|_____|_____|_____|___ Reserved
    +   |     |     |_________________________________ 0 = Removable Media
    +   |     |_______________________________________ 1 = Supports disk-switched
    +   |                                                  errors
    +   |_____________________________________________ 1 = Supports Extended
    +                                                      SmartPort
    +
    +                      Figure 1 - SmartPort Subtype Byte
    +
    +
    + +

    Note that the value for subtype is defined for certain characteristics of the device; it is not assigned to the device as with Smartport device types (see SmartPort Technical Note #4, SmartPort Device Types for a complete list).

    + +

    Attempting to distinguish different kinds of the same device by the subtype field can be confusing. For example, the Apple IIc Plus has an internal 3.5" disk drive. This drive does not support disk-switched errors nor does it support Extended SmartPort, and it has removable media. This combination of features gives it a subtype definition of $00. However, this is the same subtype returned for a UniDisk 3.5. Any program which finds type $01 (3.5" Disk) and subtype $00 and assumes the drive is a UniDisk 3.5 will be misled by any other 3.5" drive matching the characteristics of the UniDisk 3.5.

    + +

    Some Apple technical manuals state that the subtype byte may be used for identification purposes, but this cannot be supported if more than one variety of a specific device has the same characteristics and subtype.

    + +

    To determine if a particular device type is the subtype you want, you may examine the name returned in the Device Information Block (DIB) from a STATUS call with statcode = 3. For 3.5" drives, however, this is not too helpful (both a UniDisk 3.5 and an Apple 3.5 Drive return DISK 3.5).

    + +

    Because the subtype can not conclusively identify different flavors of 3.5" +drives (and perhaps other individual device types), applications must look +for errors on device specific calls and respond appropriately. Typical errors +returned from making a device-specific call to the wrong device are $21 +(BADCTL) and $22 (BADCTLPARM), although these are not the only ones. Also +note that error codes in the range $20 - $2F are duplicated as $60 - $6F, the +difference being that codes in the latter range are returned if the error was +a soft error -- a non-fatal error returned when the operation is completed +successfully but an abnormal condition is detected.

    + +

    The Reserved fields in the SmartPort subtype byte are reserved for future expansion. Present peripherals must have them set to zero so that they will not appear to support future features which are not presently defined. For this reason, programs checking the status of bits in the subtype byte should do so on a bit-by-bit basis only. For example, if you need to know if a device supports Extended Smartport, mask off all bits except bit 7 in the subtype byte before doing any comparisons. Blindly comparing to existing common subtype values (like $00 and $C0) will cause comparisons to fail when future bits in the subtype byte are defined.

    + +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt08.md b/_pages/docs/technote/smpt08.md new file mode 100644 index 0000000..c53d721 --- /dev/null +++ b/_pages/docs/technote/smpt08.md @@ -0,0 +1,56 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #8' +description: 'SmartPort Packets' +permalink: '/docs/technote/smartport/08/' +--- + +

    Written by Llew Roberts (May 1989)

    + +

    This Technical Note describes the structure and timing of a sample SmartPort packet.

    + +
    + +

    SmartPort devices communicate using SmartPort packets. The following packet shows the timing and content of a SmartPort READBLOCK call. For further explanation of the structure, please see the Apple IIGS Hardware Reference and the Apple IIGS Firmware Reference.

    + +
    Note: The CPU will recognize and act on any packet put on the bus by a SmartPort Device.
    + +
    +
    +DATA            MNEMONIC  DESCRIPTION                           TIME
    +(SmartPort Bus)           (Relative)
    +_____________________________________________________________________________
    +FF              SYNC      SELF SYNCHRONIZING BYTES              0
    +3F              :         :                                     32 micro Sec.
    +CF              :         :                                     32 micro Sec.
    +F3              :         :                                     32 micro Sec.
    +FC              :         :                                     32 micro Sec.
    +FF              :         :                                     32 micro Sec.
    +C3              PBEGIN    MARKS BEGINNING OF PACKET             32 micro Sec.
    +81              DEST      DESTINATION UNIT NUMBER               32 micro Sec.
    +80              SRC       SOURCE UNIT NUMBER                    32 micro Sec.
    +80              TYPE      PACKET TYPE FIELD                     32 micro Sec.
    +80              AUX       PACKET AUXILLIARY TYPE FIELD          32 micro Sec.
    +80              STAT      DATA STATUS FIELD                     32 micro Sec.
    +82              ODDCNT    ODD BYTES COUNT                       32 micro Sec.
    +81              GRP7CNT   GROUP OF 7 BYTES COUNT                32 micro Sec.
    +80              ODDMSB    ODD BYTES MSB's                       32 micro Sec.
    +81              COMMAND   1ST ODD BYTE = Command Byte           32 micro Sec.
    +83              PARMCNT   2ND ODD BYTE = Parameter Count        32 micro Sec.
    +80              GRP7MSB   MSB's FOR 1ST GROUP OF 7              32 micro Sec.
    +80              G7BYTE1   BYTE 1 FOR 1ST GROUP OF 7             32 micro Sec.
    +98              G7BYTE2   BYTE 2 FOR 1ST GROUP OF 7             32 micro Sec.
    +82              G7BYTE3   BYTE 3 FOR 1ST GROUP OF 7             32 micro Sec.
    +80              G7BYTE4   BYTE 4 FOR 1ST GROUP OF 7             32 micro Sec.
    +80              G7BYTE5   BYTE 5 FOR 1ST GROUP OF 7             32 micro Sec.
    +80              G7BYTE5   BYTE 6 FOR 1ST GROUP OF 7             32 micro Sec.
    +80              G7BYTE6   BYTE 7 FOR 1ST GROUP OF 7             32 micro Sec.
    +BB              CHKSUM1   1ST BYTE OF CHECKSUM                  32 micro Sec.
    +EE              CHKSUM2   2ND BYTE OF CHECKSUM                  32 micro Sec.
    +C8              PEND      PACKET END BYTE                       32 micro Sec.
    +00              FALSE     FALSE IWM WRITE TO CLEAR REGISTER     32 micro Sec.
    +_____________________________________________________________________________
    +
    +
    + +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt09.md b/_pages/docs/technote/smpt09.md new file mode 100644 index 0000000..4b35547 --- /dev/null +++ b/_pages/docs/technote/smpt09.md @@ -0,0 +1,23 @@ +--- +layout: 'page' +title: 'SmartPort Technical Note #9' +description: 'Apple II SCSI Errata' +permalink: '/docs/technote/smartport/09/' +--- + +

    Written by Llew Roberts (July 1990)

    + +

    This Technical Note documents SCSI-specific anomalies that were +discovered in the development of the Apple II High-Speed SCSI card.

    + +
    + +

    During the testing of the Apple II High Speed SCSI Card, several SCSI-related issues of interest to developers were discovered. Most of these issues directly relate to SCSI devices with removable media.

    + +

    If a CD-ROM has a bad directory, the firmware hangs because it gets a "Read In Progress" error. There is no timeout. The system can be recovered if the CD-ROM is manually ejected.

    + +

    If the media is ejected while a SmartPort DIB Status call is in progress, the call returns with incorrect results (it reports DISKSW and that the block count of the device is zero). In order to avoid this conflict, bracket the DIB Status call with the SmartPort SCSI specific Control Calls Prevent Removal ($1A) and Allow Removal ($1B).

    + +

    A SmartPort FORMAT call, in some cases, does not update the DIB correctly to reflect the new or changed partition map. If a SmartPort Init call is always made immediately after the FORMAT, the DIB is rebuilt correctly. Note that after formatting a tape, the tape should be removed from the SCSI tape drive before an Init call is made. An Init call causes the tape to rewind, hanging the system with no time-out until the rewind is complete.

    + +{% include technote_credit.html %} diff --git a/_pages/docs/technote/smpt1.md b/_pages/docs/technote/smpt1.md new file mode 100644 index 0000000..ae256bd --- /dev/null +++ b/_pages/docs/technote/smpt1.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/1/' +target_url: '/docs/technote/smartport/01/' +--- diff --git a/_pages/docs/technote/smpt2.md b/_pages/docs/technote/smpt2.md new file mode 100644 index 0000000..0a63787 --- /dev/null +++ b/_pages/docs/technote/smpt2.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/2/' +target_url: '/docs/technote/smartport/02/' +--- diff --git a/_pages/docs/technote/smpt3.md b/_pages/docs/technote/smpt3.md new file mode 100644 index 0000000..9ff96d7 --- /dev/null +++ b/_pages/docs/technote/smpt3.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/3/' +target_url: '/docs/technote/smartport/03/' +--- diff --git a/_pages/docs/technote/smpt4.md b/_pages/docs/technote/smpt4.md new file mode 100644 index 0000000..e69dc52 --- /dev/null +++ b/_pages/docs/technote/smpt4.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/4/' +target_url: '/docs/technote/smartport/04/' +--- diff --git a/_pages/docs/technote/smpt5.md b/_pages/docs/technote/smpt5.md new file mode 100644 index 0000000..8f53300 --- /dev/null +++ b/_pages/docs/technote/smpt5.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/5/' +target_url: '/docs/technote/smartport/05/' +--- diff --git a/_pages/docs/technote/smpt6.md b/_pages/docs/technote/smpt6.md new file mode 100644 index 0000000..29d8509 --- /dev/null +++ b/_pages/docs/technote/smpt6.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/6/' +target_url: '/docs/technote/smartport/06/' +--- diff --git a/_pages/docs/technote/smpt7.md b/_pages/docs/technote/smpt7.md new file mode 100644 index 0000000..2d711d2 --- /dev/null +++ b/_pages/docs/technote/smpt7.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/7/' +target_url: '/docs/technote/smartport/07/' +--- diff --git a/_pages/docs/technote/smpt8.md b/_pages/docs/technote/smpt8.md new file mode 100644 index 0000000..8b6bd53 --- /dev/null +++ b/_pages/docs/technote/smpt8.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/8/' +target_url: '/docs/technote/smartport/08/' +--- diff --git a/_pages/docs/technote/smpt9.md b/_pages/docs/technote/smpt9.md new file mode 100644 index 0000000..93b85b0 --- /dev/null +++ b/_pages/docs/technote/smpt9.md @@ -0,0 +1,7 @@ +--- +layout: 'redirect' +title: '' +description: '' +permalink: '/docs/technote/smartport/9/' +target_url: '/docs/technote/smartport/09/' +--- diff --git a/_pages/docs/technote/technote11.md b/_pages/docs/technote/technote11.md index 7160998..58e84af 100644 --- a/_pages/docs/technote/technote11.md +++ b/_pages/docs/technote/technote11.md @@ -54,7 +54,7 @@ and a clock card.

  5. Apple IIGS Hardware Reference Manual
  6. ProDOS 8 Technical Note #15, How ProDOS 8 Treats Slot 3
  7. -
  8. Miscellaneous Technical Note #7, Apple II Family Identification
  9. +
  10. Miscellaneous Technical Note #7, Apple II Family Identification

  11. diff --git a/_pages/docs/technote/technote13.md b/_pages/docs/technote/technote13.md index c4687a8..8b9a77b 100644 --- a/_pages/docs/technote/technote13.md +++ b/_pages/docs/technote/technote13.md @@ -18,13 +18,13 @@ online. -- AH

    The information formerly in this Note, the proposed file format for Apple II -double high-resolution graphics images, is now covered in the Apple II Type Notes, File Type $08.

    +double high-resolution graphics images, is now covered in the Apple II Type Notes, File Type $08.

    Further Reference


    diff --git a/_pages/docs/technote/technote19.md b/_pages/docs/technote/technote19.md index 98fd5cf..6b7f204 100644 --- a/_pages/docs/technote/technote19.md +++ b/_pages/docs/technote/technote19.md @@ -20,9 +20,9 @@ primary file type. For example, the auxiliary type field for a text file random-access file, or zero if it is a sequential file. The auxiliary type field for an AppleWorks(TM) file contains information about the case of letters in the filename (see Apple II File Type Notes, File Types $19, $1A, and $1B). The auxiliary type field for a +href="/docs/technote/ftn/19/">$19, $1A, and $1B). The auxiliary type field for a binary file (BIN, $06) contains the loading address of the file, if one exists.

    diff --git a/_pages/docs/technote/technote21.md b/_pages/docs/technote/technote21.md index bb4da07..7a654e6 100644 --- a/_pages/docs/technote/technote21.md +++ b/_pages/docs/technote/technote21.md @@ -8,61 +8,28 @@ permalink: '/docs/technote/21/'

    Revised by Dave Lyons & Matt Deatherage (March 1990) -
    Written by Matt Deatherage & Dan Strnad (November 1988)

    +
    Written by Matt Deatherage & Dan Strnad (November 1988) -

    This Technical Note describes how to identify ProDOS devices and their -characteristics given the ProDOS unit number. This scheme should only be used -under ProDOS 8.

    +

    This Technical Note describes how to identify ProDOS devices and their characteristics given the ProDOS unit number. This scheme should only be used under ProDOS 8.

    -

    Changes since January 1990: Modified AppleTalk call code for -compatibility with ProDOS 8 versions earlier than 1.5 and network-booted -version 1.4.

    +

    Changes since January 1990: Modified AppleTalk call code for compatibility with ProDOS 8 versions earlier than 1.5 and network-booted version 1.4.


    -

    There are various reasons why an application would want to identify ProDOS -devices. Although ProDOS itself takes great pains to treat all devices -equally, it has internal drivers for two types of devices: Disk II drives and -the /RAM drive provided on 128K or greater machines. Because all devices -really are not equal (i.e., some cannot format while others are read-only, -etc.), a developer may need to know how to identify a ProDOS device.

    - -

    Although the question of how much identification is subjective for each -developer, ProDOS 8 offers a fair level of identification; the only devices -which cannot be conclusively identified are those devices with RAM-based -drivers, and they could be anything. The vast majority of ProDOS devices can -be identified, however, so you could prompt the user to insert a disk in -UniDisk 3.5 #2, instead of Slot 2, Drive 2, which could be confusing if the -user has a IIc or IIGS.

    - -

    Note that for the majority of applications, this level of identification is -unnecessary. Most applications simply prompt the user to insert a disk by its -name, and the user can place it in any drive which is capable of working with -the media of the disk. You should avoid requiring a certain disk to be in a -specific drive since doing so defeats much of the device-independence which -gives ProDOS 8 its strength.

    - -

    When you do need to identify a device (i.e., if you need to format media in -a Disk II or /RAM device), however, the process is fairly straightforward. -This process consists of a series of tests, any one of which could end with a -conclusive device identification. It is not possible to look at a single ID -byte to determine a particular device type. You may determine rather quickly -that a device is a SmartPort device, or you may go all the way through the -procedure to identify a third-party network device. For those developers who -absolutely must identify devices, DTS presents the following discussion.

    +

    There are various reasons why an application would want to identify ProDOS devices. Although ProDOS itself takes great pains to treat all devices equally, it has internal drivers for two types of devices: Disk II drives and the /RAM drive provided on 128K or greater machines. Because all devices really are not equal (i.e., some cannot format while others are read-only, etc.), a developer may need to know how to identify a ProDOS device.

    + +

    Although the question of how much identification is subjective for each developer, ProDOS 8 offers a fair level of identification; the only devices which cannot be conclusively identified are those devices with RAM-based drivers, and they could be anything. The vast majority of ProDOS devices can be identified, however, so you could prompt the user to insert a disk in UniDisk 3.5 #2, instead of Slot 2, Drive 2, which could be confusing if the user has a IIc or IIGS.

    + +

    Note that for the majority of applications, this level of identification is unnecessary. Most applications simply prompt the user to insert a disk by its name, and the user can place it in any drive which is capable of working with the media of the disk. You should avoid requiring a certain disk to be in a specific drive since doing so defeats much of the device-independence which gives ProDOS 8 its strength.

    + +

    When you do need to identify a device (i.e., if you need to format media in a Disk II or /RAM device), however, the process is fairly straightforward. This process consists of a series of tests, any one of which could end with a conclusive device identification. It is not possible to look at a single ID byte to determine a particular device type. You may determine rather quickly that a device is a SmartPort device, or you may go all the way through the procedure to identify a third-party network device. For those developers who absolutely must identify devices, DTS presents the following discussion.

    Isn't There Some Kind of "ID Nibble?"

    -

    ProDOS 8 does not support an "ID nibble." Section 5.2.4 of the ProDOS 8 -Technical Reference Manual states that the low nibble of each unit number in -the device list "is a device identification: 0 = Disk II, 4 = Profile, -$F = /RAM."

    +

    ProDOS 8 does not support an "ID nibble." Section 5.2.4 of the ProDOS 8 Technical Reference Manual states that the low nibble of each unit number in the device list "is a device identification: 0 = Disk II, 4 = Profile, $F = /RAM."

    -

    When ProDOS 8 finds a "smart" ProDOS block device while doing its search of -the slots and ports, it copies the high nibble of $CnFE (where n is the slot -number) into the low nibble of the unit number in the global page. The low -nibble then has the following definition:

    +

    When ProDOS 8 finds a "smart" ProDOS block device while doing its search of the slots and ports, it copies the high nibble of $CnFE (where n is the slot number) into the low nibble of the unit number in the global page. The low nibble then has the following definition:

    Bit 3:
    Medium is removable
    @@ -116,7 +83,7 @@ are mapped to slot 2; this mapping gives these two devices unit numbers of $20 and $A0 respectively, but the device's driver entry point is still in the $C5xx address space.

    -

    ProDOS 8 Technical Note #20, Mirrored +

    ProDOS 8 Technical Note #20, Mirrored Devices and SmartPort, discusses this kind of mapping in detail. It also presents a code example which gives you the correct device-driver entry point (from the global page) given the unit number as input. Here is the @@ -278,7 +245,7 @@ third-party network device.

    Auxiliary-slot RAM disks are identified by convention. Any device in slot 3, drive 2 (unit number $B0) is assumed to be an auxiliary-slot RAM disk since ProDOS 8 does not recognize any card which is not an 80-column -card in slot 3 (see ProDOS 8 Technical Note +card in slot 3 (see ProDOS 8 Technical Note #15, How ProDOS 8 Treats Slot 3). There is a chance that some other kind of device could be installed with unit number $B0, but it is not likely.

    @@ -376,10 +343,11 @@ This call returns the ASCII name of the device, a device type and subtype, as well as the size of the device. Some SmartPort device types and subtypes are listed in the referenced manuals, with a more complete list located in the Apple IIGS Firmware Reference. A list containing SmartPort -device types only is provided in SmartPort +device types only is provided in SmartPort Technical Note #4, SmartPort Device Types.

    +

    RAM-Based Drivers

    One fork of the identification tree comes to an end at this point. If the @@ -470,7 +438,7 @@ Changes and Minutia of Auxiliary Memory -


    +
    diff --git a/_pages/docs/technote/technote27.md b/_pages/docs/technote/technote27.md index 765ebce..af73b29 100644 --- a/_pages/docs/technote/technote27.md +++ b/_pages/docs/technote/technote27.md @@ -71,7 +71,7 @@ occupies first.

    Further Reference