💾 Archived View for mirrors.apple2.org.za › active › ftp.apple.asimov.net › images › disk_utils › Id… captured on 2024-03-21 at 23:53:06.

View Raw

More Information

⬅️ Previous capture (2023-05-24)

-=-=-=-=-=-=-

README for ID, ID.OBJ, and source files
by Scott Blackman <blackmsm@ctrvax.vanderbilt.edu>

     Many years ago I wrote a short little program to identify various 
hardware features of my Apple II+.  This program slowly grew as I acquired an 
Apple //e, and again when I got my Apple IIgs.  Most recently, I have found it 
useful to test out the emulated hardware configuration of the various Apple II 
emulators which have been cropping up.  As it sits, the program can identify 
many different hardware configurations, with the main constraint being that it 
has been tested only with hardware I could get my hands on.

     A couple of areas where I think this program shines: (1) It can detect 
how many 5.25 drives are attached to the Disk II.  (2) It flips bits in order 
to detect cards which are installed in Slot 3 (not Auxiliary slot!), and slots 
which are currently disabled on a IIgs.  (3) It detects the Mockingboard in
what appears to be the right way, using interrupts, which I derived from the
Ultima III bootup code.  (4) It can identify some stuff in the IIgs Memory
slot.

     I think this is a good one to use in conjunction "SlotScan" by Robert S. 
Claney, since I know we use a few different methods, and can identify a few 
non-overlapping things.

     I am also releasing the source code to this program, in the hope that 
people wanting to identify some hardware will extract and use my routine.  I 
am releasing this software into the public domain.  Use it or modify it as you 
see fit.  I only ask that, if you distribute a similar "ID" program with one 
or more of these routines, you put my name on it too.




This program does things to your Apple that don't follow all the rules.
It reads slot memory directly, makes SCSI and Smartport calls directly,
makes the processor execute undocumented/illegal instructions, and otherwise
does stuff that might not follow all the rules.

I am NOT responsible if you break your computer, reformat your hard drive,
or otherwise cause any undesirable effect to occur as a result of running
my program.  YOU are responsible for all the results of this program which
I am releasing into the public domain.

Of course, it is important to add that this program works beautifully on
my computer, and that I think it only bends the rules, rather than breaking
them.  :-)




I derived some of the code in this program from a couple of sources ranging
from reference books to commercial software.  The //e, //c, IIgs references
and TechNotes, of course, were invaluable.  I got the idea for the drive
detection by figuring out how Copy II+ did it, but I wrote my own code to
do the job.  The GS memory slot code was based on code I found in the AE
RamKeeper CDA.  The Mockingboard code was derived from code in the Ultima III
bootup routine.  I dug into the Apple High-Speed SCSI Utilities (Rev D)
software to get information on the SCSI calls to identify the physical hard
drive (rather than the partitions), get its ID, etc.  There are lots of other
little tidbits like that I picked up from various places, probably including
comp.sys.apple2, inCider, Nibble, Call-A.P.P.L.E., and those other gems of the
early 80's.  Finally, the idea for the program came from a beta version of
PRODOS (version B.4, dated 04-FEB-83 on the splash screen) -- the STARTUP file
gave a (very rudimentary) "slot inventory" and I said, Gee that's neat.  I
believe later versions of the ProDOS system disks also had a slot inventory
which you could get by pressing "S" at a menu.  That ProDOS program is also
where I got the information to detect the Silentype printer.




Here are the things I know it can identify:

Computer type (II, II+, //e, //e+, various //c, IIgs)
Memory (16K language card, 64K 80-col card, IIgs memory)
  - does not include Slot 0 RAM over 16K, Auxiliary slot memory over 64K, or 
    slot cards such as the Apple II Memory Expansion Card or RamFactor
    (although these slot cards show up under the Slot Inventory)

Processor type
  - does this via illegal 6502 opcodes; perhaps not the safest way on some
    6502 machines

Game controller used/not used

One-wire shift key mod (paddle 3)

The slot inventory can detect:
  - Empty slots (the value of a memory location is not constant)
  - Cards following the Pascal I.D. protocol (but I don't just stop there for
    cards I can further identify)
  - Super Serial card
  - ASIO serial card
  - Apricorn graphics printer interface card
  - Mockingboard
  - Silentype printer card
  - Thunderclock
  - AppleMouse
  - ProDOS block devices
      - ProFILE
      - AE RamFactor
      - Disk II (13 or 16 sector, and number of drives attached, by looking at
        the latch value)
      - SmartPort
         - Apple II Memory Expansion Card
         - IIgs built-in RAM disk
         - ROM disk (such as AE RamKeeper)
         - UniDisk 3.5
         - Apple 3.5 drive
      - SCSI card
         - returns drives, not just partitions, by making SCSI calls
         - I think it distinguishes Rev C vs Rev D Apple SCSI cards (I have a
           Rev D), but I have NEVER TRIED IT with a RamFast.
  - Auxiliary slot contents independently detected in addition to Slot 3.
  - IIgs Memory slot contents identified by a routine I grabbed from the AE 
    RamKeeper CDA.  Detects RamKeeper and its piggyback card(s).  This only 
    detects a couple of AE cards by name, since it came from AE originally.