SST


Last updated - 20th feb 2008.  WORK IN PROGRESS!!!!!


"I'D LOVE TO SEE YOU CONTINUE THE WORK"    SALTINE

**********

Version    Contributors
=======    ================
20080218 : Deckard

- DOS to ProDoS move of original code
- Sourceror of original code
- Cross-reference labels between modules
- Memory map
- Swaps map
- 16 sectors disk map (floppies created by SST)
- Clean source codes of:
  SST.CONTROLER
  SST.RELOCATOR
  SST.SUBS
  SST.RWTS
  EDD.TEXT
  EDD.CHECKMEM
  EDD.HGR2PRT (extracted from EDD 4.9)
  EDD.PAGE0
  EDD.ROM
- In progress:
  EDD.B000.B4FF
- This page.
- Few Comments:
  EDD.MAIN
  EDD.OPT2.OPT1
  EDD.DRIVE



TO DO:

Carefully replace the labels produced by sourceror with the official EDD labels written in the PDF.
WARNING: EDD 4.2 and SST (EDD 4.8) have differences and labels are not always the same or equals.

EDD.MAIN
EDD.OPT2.OPT1
EDD.OPT4.OPT5
EDD.OPT3.OPT7
EDD.ANALYZE
EDD.CONTROL
EDD.DRIVE

I'll add  soon more informations (how to build the program, ...)

If you want to contribute to my project: THE FULL MERLIN 8 SOURCE CODE OF SST, please leave a message on the comp.sys.apple2 newsgroup and indicate the file you want to update BEFORE doing it.

Volunteers: Jonnosan, JPL, Toinet.


COME BACK TO: THE DOTNIB PROJECT.


800k
ProDOS
Download SST Source code - release 20080218 - (gzipped)

File: DotNIB_SST.hdv
Disk: ProDOS /DOTNIB.SST (800KB)
 Name                             Type Auxtyp Modified         Format   Length
------------------------------------------------------------------------------
 PRODOS                           SYS  $0000  21-Oct-08 00:07  ProDOS    17128
 RAM.DRV.SYSTEM                   SYS  $2000  26-May-92 21:27  ProDOS     1209
 BASIC.SYSTEM                     SYS  $2000  13-Feb-92 01:00  ProDOS    10240
 SRC                              DIR  $0000  19-Feb-08 00:19  ProDOS     1024
 SRC:EDD.ANALYZE.S                TXT  $0000  18-Feb-08 00:45  ProDOS     9753
 SRC:EDD.TEXT.S                   TXT  $0000  17-Feb-08 16:05  ProDOS     8122
 SRC:EDD.CONTROL.S                TXT  $0000  18-Feb-08 00:49  ProDOS     6742
 SRC:EDD.B000.B4FF.S              TXT  $0000  18-Feb-08 00:58  ProDOS     8533
 SRC:EDD.DRIVE.S                  TXT  $0000  19-Feb-08 00:19  ProDOS    16041
 SRC:EDD.MAIN.S                   TXT  $0000  18-Feb-08 23:55  ProDOS    18046
 SRC:EDD.OPT2.OPT1.S              TXT  $0000  19-Feb-08 00:05  ProDOS     8798
 SRC:SST.RWTS.S                   TXT  $0000  17-Feb-08 16:38  ProDOS    17905
 SRC:EDD.OPT3.OPT7.S              TXT  $0000  19-Feb-08 00:09  ProDOS     6073
 SRC:EDD.OPT4.OPT5.S              TXT  $0000  19-Feb-08 00:07  ProDOS     3308
 SRC:SST.CONTROLER.S              TXT  $0000  17-Feb-08 15:30  ProDOS     4788
 SRC:SST.SUBS.S                   TXT  $0000  17-Feb-08 23:03  ProDOS    19838
 SRC:OBJ                          DIR  $0000  19-Feb-08 00:19  ProDOS      512
 SRC:OBJ:SALTINE                  DIR  $0000  18-Feb-08 00:46  ProDOS     1024
 SRC:OBJ:SALTINE:SST              BIN  $0B00  [No Date]        ProDOS    21760
 SRC:OBJ:SALTINE:SST.CONTROLER    BIN  $B500  17-Feb-08 15:39  ProDOS      512
 SRC:OBJ:SALTINE:EDD.TEXT         BIN  $3000  [No Date]        ProDOS     4096
 SRC:OBJ:SALTINE:SST.SUBS         BIN  $1D00  [No Date]        ProDOS     1792
 SRC:OBJ:SALTINE:SST.RWTS         BIN  $B700  [No Date]        ProDOS     2304
 SRC:OBJ:SALTINE:EDD.MAIN         BIN  $0C00  [No Date]        ProDOS     3014
 SRC:OBJ:SALTINE:EDD.OPT2.OPT1    BIN  $17C6  18-Feb-08 00:21  ProDOS     1338
 SRC:OBJ:SALTINE:EDD.OPT4.OPT5    BIN  $1D00  18-Feb-08 00:31  ProDOS      512
 SRC:OBJ:SALTINE:EDD.B000.BFFF    BIN  $B000  [No Date]        ProDOS     4096
 SRC:OBJ:SALTINE:EDD.DRIVE        BIN  $4700  [No Date]        ProDOS     2304
 SRC:OBJ:SALTINE:EDD.B000.B4FF    BIN  $B000  [No Date]        ProDOS     1280
 SRC:OBJ:SALTINE:EDD.OPT3.OPT7    BIN  $2100  18-Feb-08 00:36  ProDOS     1280
 SRC:OBJ:SALTINE:EDD.ANALYZE      BIN  $2600  18-Feb-08 00:46  ProDOS     1562
 SRC:OBJ:SALTINE:EDD.CONTROL      BIN  $2C1A  [No Date]        ProDOS      998
 SRC:OBJ:SALTINE:EDD.CHECKMEM     BIN  $1F00  [No Date]        ProDOS      512
 SRC:OBJ:SALTINE:SST.RELOCATOR    BIN  $0B00  17-Feb-08 15:52  ProDOS      256
 SRC:OBJ:COMPSYSA2                DIR  $0000  19-Feb-08 00:19  ProDOS     1024
 SRC:OBJ:COMPSYSA2:SST.CONTROLER  BIN  $B500  17-Feb-08 15:30  ProDOS      512
 SRC:OBJ:COMPSYSA2:EDD.TEXT       BIN  $3000  17-Feb-08 16:04  ProDOS     4096
 SRC:OBJ:COMPSYSA2:SST.SUBS       BIN  $1D00  17-Feb-08 23:03  ProDOS     1792
 SRC:OBJ:COMPSYSA2:EDD.MAIN       BIN  $0C00  18-Feb-08 23:55  ProDOS     3014
 SRC:OBJ:COMPSYSA2:EDD.OPT2.OPT1  BIN  $17C6  19-Feb-08 00:05  ProDOS     1338
 SRC:OBJ:COMPSYSA2:EDD.OPT4.OPT5  BIN  $1D00  19-Feb-08 00:07  ProDOS      512
 SRC:OBJ:COMPSYSA2:EDD.B000.B4FF  BIN  $B000  18-Feb-08 00:58  ProDOS     1280
 SRC:OBJ:COMPSYSA2:EDD.DRIVE      BIN  $B700  19-Feb-08 00:19  ProDOS     2304
 SRC:OBJ:COMPSYSA2:EDD.OPT3.OPT7  BIN  $2100  19-Feb-08 00:09  ProDOS     1280
 SRC:OBJ:COMPSYSA2:EDD.ANALYZE    BIN  $2600  18-Feb-08 00:45  ProDOS     1562
 SRC:OBJ:COMPSYSA2:EDD.CONTROL    BIN  $2C1A  18-Feb-08 00:49  ProDOS      998
 SRC:OBJ:COMPSYSA2:SST.RWTS       BIN  $B700  17-Feb-08 23:08  ProDOS     2304
 SRC:OBJ:COMPSYSA2:EDD.CHECKMEM   BIN  $1F00  17-Feb-08 16:22  ProDOS      512
 SRC:OBJ:COMPSYSA2:SST.RELOCATOR  BIN  $0B00  17-Feb-08 15:50  ProDOS      256
 SRC:OBJ:COMPSYSA2:EDD.HGR2PRT    BIN  $0800  17-Feb-08 16:34  ProDOS      768
 SRC:OBJ:EDD.4.9                  DIR  $0000  01-Feb-08 13:59  ProDOS      512
 SRC:OBJ:EDD.4.9:EDD.HGR2PRT      BIN  $0800  [No Date]        ProDOS      768
 SRC:EDD.CHECKMEM.S               TXT  $0000  17-Feb-08 16:20  ProDOS    11216
 SRC:EDD.HGR2PRT.S                TXT  $0000  17-Feb-08 16:34  ProDOS     3693
 SRC:SST.RELOCATOR.S              TXT  $0000  17-Feb-08 15:50  ProDOS     1583
 SRC:TMP                          DIR  $0000  03-Feb-08 17:01  ProDOS      512
 SRC:EDD.PAGE0.S                  TXT  $0000  17-Feb-08 23:12  ProDOS      988
 SRC:EDD.ROM.S                    TXT  $0000  17-Feb-08 23:12  ProDOS     1144
------------------------------------------------------------------------------

NOTE: SST is not compatible with ProDOS because both programs use the bank 2 memory
This source code is under ProDOS ONLY because I wanted to work with a 800k .HDV (and Applewin or Apple Oasis)


Table of contents


Link Content
Voir 01) Memory map.
Voir 02) Screens.
Voir 03) Sub-routines entry points.
Voir 04) Differences between SST versions.
Voir 05) Track numbers.
Voir 06) Saltine's patches.
Voir 07) EDD protection scheme.
Voir 08) Difference between EDD and EDD+.
Voir 09) Missing code.
Voir 10) SST documentation.
Voir 11) Why to produce a clean SST source code?
Voir 12) Format of the 16 sectors disks created by SST.
Voir 13) .
Voir 14) .
Voir 15) .


hr SST


01) Memory map.


*****************************
* MEMORY MAP OF EDD 4.8/SST *
*  ==> BEFORE RELOCATOR <== *
*****************************

SST $0B00-$62FF (L$5800=22528)

              RELOCATED
BLOAD ADDR      (Y/N)     FILENAME       LEN      DESCRIPTION
===========   =========   =============  ======== ===========================================
$0B00-$0BFF :     N     : SST.RELOCATOR  (L$0100) Relocator
$0C00-$17C5 :     N     : EDD.MAIN       (L$0BC6) Main EDD routines
$17C6-$1CFF :     N     : EDD.OPT2.OPT1  (L$053A) Change parameters + back up a disk options
$1D00-$1EFF :     N     : EDD.OPT4.OPT5  (L$0200) Scan disk + certify & erase disk options
$1F00-$20FF :     N     : EDD.CHECKMEM   (L$0200) Memory protection scheme
$2100-$25FF :     N     : EDD.OPT3.OPT7  (L$0500) Drive speed + drive examine options
$2600-$2C19 :     N     : EDD.ANALYZE    (L$061A) Analyze a disk module
$2C1A-$2FFF :     N     : EDD.CONTROL    (L$03E6) Control module
$3000-$3FFF :     N     : EDD.TEXT       (L$1000) Text tables & addresses
$4000-$44FF :     Y     : EDD.B000.B4FF  (L$0500) EDD buffers
$4500-$46FF :     Y     : SST.CONTROLER  (L$0200) SST controller
$4700-$4FFF :     Y     : EDD.DRIVE      (L$0900) Disk drive routines
$5000-$58FF :     Y     : SST.RWTS       (L$0900) RWTS for SST
$5900-$5FFF :     Y     : SST.SUBS       (L$0700) Subroutines for SST
$6000-$62FF :     Y     : EDD.HGR2PRT    (L$0300) Write 16 lines on the bottom of HGR2 screen


*****************************
* MEMORY MAP OF EDD 4.8/SST *
* ===> AFTER RELOCATOR <=== *
*****************************

Note:
The code is never executed in the storage location (alt bank & bank 2).
It must be in main memory. So a swap is required between storage
location address and exec address before running it.

                                       STORAGE
RELOCATED                              LOCATION
ADDR         EXEC ADDR    BLOAD ADDR   ADDR (SWAP)          FILENAME       LEN     DESCRIPTION
===========  ===========  ===========  ==================  =============  ======== ======================================
$0800-$0AFF  $0800-$0AFF  $6000-$62FF  <no swap>           EDD.HGR2PRT    (L$0300) Write 16 lines (bottom of HGR2)
$0B00-$0BFF  $0B00-$0BFF  $0B00-$0BFF  <no swap>           SST.RELOCATOR  (L$0100) Relocator
$0C00-$17C5  $0C00-$17C5  $0C00-$17C5  <no swap>           EDD.MAIN       (L$0BC6) Main EDD routines
$17C6-$1CFF  $17C6-$1CFF  $17C6-$1CFF  <no swap>           EDD.OPT2.OPT1  (L$053A) Change params + back up a disk options
$1D00-$1EFF  $1D00-$1EFF  $1D00-$1EFF  $E000-$E1FF alt bk  EDD.OPT4.OPT5  (L$0200) Scan disk + certify/erase disk options
$1F00-$20FF  $1F00-$20FF  $1F00-$20FF  $E200-$E3FF alt bk  EDD.CHECKMEM   (L$0200) Memory protection scheme
$2100-$25FF  $2100-$25FF  $2100-$25FF  $E400-$E8FF alt bk  EDD.OPT3.OPT7  (L$0500) Drive speed + drive examine options
***********  $2500-$25FF  ***********  ******************  *************  (L$0100) Backup of EDD params buff (unpack)
$2600-$2C19  $2600-$2C19  $2600-$2C19  $E900-$EF19 alt bk  EDD.ANALYZE    (L$061A) Analyze a disk module
$2C1A-$2FFF  $2C1A-$2FFF  $2C1A-$2FFF  $EF1A-$F2FF alt bk  EDD.CONTROL    (L$03E6) Control module
$3000-$3FFF  <datas>      $3000-$3FFF  $F300-$F4FF alt bk  EDD.TEXT       (L$1000) Text tables & addresses
$4000-$77FF  <datas>      ***********  <no swap>           *************  (L$3800) Raw disk byte buffer
$7800-$AFFF  <datas>      ***********  <no swap>           *************  (L$3800) Track buffer & Timing bit buffer
$B000-$B0FF  <datas>      $4000-$40FF  <no swap>           EDD.B000.B4FF  (L$0100) EDD Preanalyze buffer
$B100-$B1FF  <datas>      $4100-$41FF  <no swap>           EDD.B000.B4FF  (L$0100) EDD Prewrite buffer
$B200-$B2FF  <datas>      $4200-$42FF  <no swap>           EDD.B000.B4FF  (L$0100) EDD Program variables storage buffer
$B300-$B3FF  <datas>      $4300-$43FF  <no swap>           EDD.B000.B4FF  (L$0100) EDD Parameter buffer
$B400-$B4FF  <datas>      $4400-$44FF  <no swap>           EDD.B000.B4FF  (L$0100) EDD Parameter buffer (reserved)
$B500-$B6FF  $B500-$B6FF  $4500-$46FF  <no swap>           SST.CONTROLER  (L$0200) SST controller
$B700-$BFFF  $B700-$BFFF  $4700-$4FFF  $D700-$DFFF bank 2  EDD.DRIVE      (L$0900) Disk drive routines
$D700-$DFFF  $B700-$BFFF  $5000-$58FF  $D700-$DFFF bank 2  SST.RWTS       (L$0900) RWTS for SST
$E000-$E6FF  $1D00-$23FF  $5900-$5FFF  $E000-$E6FF alt bk  SST.SUBS       (L$0700) Subroutines for SST


*****************************
* MEMORY MAP OF EDD 4.8/SST *
*   ===> SWAP EDD/SST <===  *
*****************************

Swap functions use the CTL_XCH1 sub-function (SST.CONTROLER source code)

Function: CTL_MOVE (SST.CONTROLER source code)
========

$1D00-$31FF (main memory)    <=>    $E000-$F4FF (alt bank)

EDD                                 SST
             
$1D00-$1EFF : EDD.OPT4.OPT5         $E000-$E6FF : SST.SUBS
$1F00-$20FF : EDD.CHECKMEM          $E700-$F4FF : <<Not used>>
$2100-$25FF : EDD.OPT3.OPT7
$2600-$2C19 : EDD.ANALYZE
$2C1A-$2FFF : EDD.CONTROL
$3000-$31FF : EDD.TEXT (part)
             
SST                                 EDD

$1D00-$23FF : SST.SUBS              $E000-$E1FF : EDD.OPT4.OPT5
$2400-$31FF : <<Not used>>          $E200-$E3FF : EDD.CHECKMEM
                                    $E400-$E8FF : EDD.OPT3.OPT7
                                    $E900-$EF19 : EDD.ANALYZE
                                    $EF1A-$F2FF : EDD.CONTROL
                                    $F300-$F4FF : EDD.TEXT (part)


Function: SBS_XCHANGE (SST.SUBS source code)
========

$B700-$BFFF (main memory)    <=>    $D700-$DFFF (bank 2)

EDD                                 SST

$B700-$BFFF : EDD.DRIVE             $D700-$DFFF : SST.RWTS

SST                                 EDD

$B700-$BFFF : SST.RWTS              $D700-$DFFF : EDD.DRIVE


Return to the Table Of Contents

hr SST


02) Screens.



How to start: BRUN SST

EDD 4.2 screen
SST screen
EDD 4.2 Main Menu
SST Main Menu
SST screen
SST screen
SST Pirate a disk
SST Unpack
SST screen
EDD/SST Get parms screen (default values)
SST Screen
SST Screen
SST Init A Disk screen #1
SST Init A Disk screen #2


PIRATE A DISK (SST):

1) Copy => is equivalent to EDD option << 1) Back up a disk >>

2) Pack => read a protected 5.25 disk and write 2 16 sectors disks.

3) Unpack => read 2 .dsk files and create a .NIB file (with emulator)
    1) packed parms
    2) yours parms

.NIB track = $1A00 bytes (6656 bytes).
.NIB length: $23 tracks * $1A00 bytes = $38E00 (232960)
EDD uses a longer buffer for each track: $1C00 and SST stores the full EDD buffer on disk.
When a .NIB file is created, $200 bytes of every track are lost.
26 sectors are required for saving the track buffer.


Return to the Table Of Contents

hr SST


03) Sub-routines entry points.


*****************************
* TABLE OF ADDRESSES FOR    *
* EDD/SST COMMANDS          *
*****************************

      ORG $16B9
                ; Opt Command
LTDDO DA  $B500 ;  1  CTL_PIRATEDSK (SST:pirate a disk) was COPYDISK with EDD
      DA  $17C6 ;  2  CHNGPARM
      DA  $2103 ;  3  DRVSPEED
      DA  $1D03 ;  4  SCANDISK
      DA  $1D00 ;  5  CERTDISK
      DA  $0CAF ;  6  CHNGSLTS
      DA  $2100 ;  7  DRVEXAM
      DA  $0CA7 ;  8  CLRERRCD
      DA  $B50D ;  9  CTL_INITDSK (SST:initialize a disk) was EDDQUIT with EDD
      DA  $0CE2 ;     QUITEDD
      DA  $0C6B ;     E2


Return to the Table Of Contents

hr SST


04) Differences between SST versions.


*****************************
*   DIFFERENCES BETWEEN     *
*      SST VERSIONS         *
* SALTINE / COMP.SYS.APPLE2 *
*****************************

BLOAD ADDR    AFTER RELOC   FILENAME       SALTINE                                     COMP.SYS.APPLE2
===========   ===========   =============  ==========================================  ================================
$0B22-$0B47 : $0B22-$0B47 : SST.RELOCATOR  End of relocator                            Relocate EDD.HGR2PRT +
                                                                                       get computer infos for CHECKMEM
$0B48-$0BFF : $0B48-$0BFF : SST.RELOCATOR  <unused> Filled with different values       Filled with $00
$0C20-$0C31 : $0C20-$0C31 : EDD.MAIN       <unused> Dead routines                      Filled with $00
$1BC9-$1BD2 : $1BC9-$1BD2 : EDD.OPT2.OPT1  <unused> Dead routines                      Filled with $00
$1BFE-$1CFF : $1BFE-$1CFF : EDD.OPT2.OPT1  <unused> TXT result of compilation process  Filled with $00
$1E80-$1EFF : $1E80-$1EFF : EDD.OPT4.OPT5  <unused> TXT result of compilation process  Filled with $00
$1F00-$2094 : $1F00-$2094 : EDD.CHECKMEM   Altered bytes after first exec              Correct bytes before exec BOOT 2 
$2095-$20FF : $2095-$20FF : EDD.CHECKMEM   <unused> TXT result of compilation process  Filled with $00
$2480-$25FF : $2480-$25FF : EDD.OPT3.OPT7  <unused> TXT result of compilation process  Filled with $00
$2BDF-$2C19 : $2BDF-$2C19 : EDD.ANALYZE    <unused> TXT result of compilation process  Filled with $00
$3F71-$3FFF : $3F71-$3FFF : EDD.TEXT       <unused> Filled with different values       Filled with $00
$4400-$44FF : $B400-$B4FF : EDD.B000.B4FF  <unused> Filled with different values       Filled with $00
$456C-$457B : $B56C-$B57B : SST.CONTROLER  Filled with old values (last run)           Filled with $00
$457C-$46FF : $B57C-$B6FF : SST.CONTROLER  <unused> Filled with different values       Filled with $00
$4FE4-$4FFF : $BFE4-$BFFF : EDD.DRIVE      <unused> Filled with different values       Filles with $00
$5369-$5394 : $DA69-$DA94 : SST.RWTS (bk2) <unused> DOS Routine                        Filled with $00
$5400-$5555 : $DB00-$DC55 : SST.RWTS (bk2) NBUF1 and NBUF2 after last run              Filled with $00
$58DF-$58FF : $DFDF-$DFFF : SST.RWTS (bk2) <unused> DOS Routine                        Filled with $00
$5E9F-$5F66 : $E59F-$E666 : SST.SUBS       <unused> Dead routines                      Filled with $00
$5F67-$5FFF : $E667-$E6FF : SST.SUBS       <unused> TXT result of compilation process  Filled with $00
$6000-$62FF : $0800-$0AFF : EDD.HGR2PRT    Missing (crash!!!)                          Correct code added


Return to the Table Of Contents

hr SST


05) Track numbers.


TRACKS NUMBERS
==============

EDD IV supports 1/4, 1/2 and 3/4 tracks, so the EDD track numbers for internal use have
a step of 1/4.

|---|---|---|---|---|---|---|---|...   ...|---|---|---|---|---|---|---|---|     Genuine disk
00              01              02        21              22              (23)  Track numbers (hex)
   .25 .50 .75     .25 .50 .75               .25 .50 .75     .25 .50 .75        Steps

|---|---|---|---|---|---|---|---|...   ...|---|---|---|---|---|---|---|---|     EDD (internal use)
00  01  02  03  04  05  06  07  08        84  85  86  87  88  89  8A  8B  (8C)  Track numbers

this is true for the following variables in the program variable storage buffer ($B200-$B2FF):
STARTRK $B288 (genuine track * 4)
ENDTRK  $B289 (genuine track * 4)
TRACK   $B28B (genuine track * 4)

STEP    $B28A [=$04 if the user entered step = 1]


Return to the Table Of Contents

hr SST


06) Saltine's patches.


SST controller - listing : Click HERE!
SST controller - assembly : Click HERE!

SST sub-routines - listing : Click HERE!
SST sub-routines - assembly : Click HERE!

SST RWTS - listing : Click HERE!
SST RWTS - assembly : Click HERE!

EDD page 0 - listing : Click HERE!

EDD rom - listing : Click HERE!


Return to the Table Of Contents

hr SST


07) EDD protection scheme.


The EDD 4.2 crack by JPL: Click HERE!

The PDF of EDD IV isn't complete. A routine is missing: CHECKMEM.
And this is normal because it is a part of the protection scheme of the program!! (anti-wildcard copy => EDD is a single-load application).

My commented source code (for $1F00-$20FF):
Listing : Click HERE!
Assembly : Click HERE!
Thread (HackZApple - french) : Click HERE!


Return to the Table Of Contents

hr SST


08) Difference between EDD and EDD+.


 To: sicklittlemonkey
 > Complexity and cost (FDI
 > or EDD+ card, say) are significant barriers of entry to enthusiasts or
 > collectors who might like to casually contribute images.

TIPS: How to run the "EDD 4.9 PLUS" program without the EDD+ card:


Boot a DOS 3.3 disk.
Insert the "EDD 4.9 PLUS" floppy (downloaded from the Dave Touvell's website)
in your disk drive 1.


Type:


BLOAD EDD V4.9 (load the configured EDD+ version)
POKE 25290,0   (change EDDVRSN flag before relocate the code)
CALL 3069      (run EDD in standard mode)


You'll NOT have this error message anymore when using the "back up a disk"
option:


"Either the EDD PLUS CARD is not located in slot#x, or the PLUS CARD is not
connected to the original disk drive controller located in slot#6".


About the flag:


EDDVRSN  $B2CA: $00 => EDD 4 version (use standard bitcopy subroutines)
EDDVRSN  $B2CA: $01 => EDD 4 PLUS version (use plus card  bitcopy subroutines)


For SST, EDDVRSN = $00.


Return to the Table Of Contents

hr SST


09) Missing code.


SST is bugged: option 4 (EDD scan disk) doesn't work properly.
The program crashs or runs an inappropriate routine.

Saltine forgot to add a routine ($0A80-$0AFF) + datas ($0800-$0A7F) which are
used for setting HGR2 and displaying track numbers on the bottom of the
screen.


My version will work fine: I retrieved the routine from EDD 4.9.


Return to the Table Of Contents

hr SST


10) SST documentation.


                               How to use

                               S    S    T

                         Saltine's Super Transcopy

*** Introduction ***

      Back in the good old days when the Apple computer thrived, there
 existed various groups of individuals who's existance revolved
 around the removal of copy protection from Apple software.  These groups,
 while they had the same goal, were very competative.  They attempted to
 remove the protection from a piece of software as fast as possible, so
 they could "release" it to the Pirate world.  The groups were composed of
 various individuals that each possessed a certain talent; one might be
 skilled in creating title graphics while another in removal of protection,
 and still another in distributing the "cracked" software.  Once a "ware"
 was released, the first thing that needed to be done was to get it to the
 "cracker" to remove the protection.  Since the "ware" was protected from
 copying, it could not be sent via modem, so it had to be sent via
 snail-mail.  This program was the result of an attempt to allow the user
 to send protected software via modem.

*** What is it? ***

      SST is a modification of a popular copy program for the Apple line
 of computers.  The copy program allows the user to duplicate almost any
 Apple // disk.  It occurred to me that this program has to store the image
 of a track in memory before it can write it to the copy of the disk.  I
 obtained a copy of the source code from the manufacturer for $20.  Using
 that, I modified the program so that instead of copying a disk, it reads
 a track, and then dumps the track image to a normal DOS 3.3 formatted
 floppy.  This of course took more space than the original track, resulting
 in two DOS 3.3 disk sides for each protected disk side.  The advantage,
 of course, was that these DOS 3.3 formatted disks could be sent via the modem.
 Once somebody received these disks over the modem, SST could be used once
 again; this time to read the track image into memory and write the
 protected track back to a disk.

 Yeah, but I'm using an emulator!  Emulators can't use protected disks!

 WRONG!  If the DOS 3.3 disks described above are transferred to an emulator,
 and that emulator supports nibble images, SST can create a "protected"
 disk image!  Of course, it won't be very protected any more as you can
 copy the resulting disk image just like any other file.

Transfering Disks:

*TO* Apple //

 To use SST, you first have to transfer SST to a REAL
 apple disk.  Here is a suggestion on how to do that.

 What you need:  Apple // with a terminal program (AE works fine)
                 Null Modem Cable
                 DOS 3.3 formatted 5 1/4 bootable disk
                 Amiga, Mac, PC, with a terminal program
                 This archive
                 Patience

 1)  Use a terminal program to transfer SST and CopyII
     to the dos 3.3 formatted disk.

 2)  If you are using an Amiga also transfer DDD to the Apple disk
 
 3)  That's it!

 NOTE: You can skip the above steps if you have the ability to transfer
 diskimages directly to the Apple //.  Transfer the SST.dsk image included
 in this archive to an Apple // disk.

*FROM* Apple //

 There are three major ways of transfering Apple disks:

 1)  The Amiga computer with an A1020 5.25 drive and the disk conversion
     program provided with the Apple2000 emulator.

 2)  A serial link between a real Apple ][ and another computer.  This
     requires special software on both sides.

 3)  Compress the disk using Dalton's Disk Disintegrator (DDD), transfer
     it via a telecom program to an Amiga, load it into Apple 2000,
     save it with a .dsk extension.

 If you need more info on transfering disks, refer to the Apple FAQ.

*** Using SST ***
 
 O.K. Now that you have SST on an Apple Dos 3.3 formatted disk:

 0)   Make sure any "Quick disk" options are disabled on the emulator
 1)   Format an Apple floppy on both sides.  (INIT HELLO)
 2)   Put the Dos 3.3 disk with SST on it in drive 1
      BRUN SST
 3)   Select '1' for 'Pirate a Disk'
 4)   Select '2' for 'Pack Disk'
 5)   Use all of the Default settings
 6)   Place copy protected disk in drive 1
        (You can use one drive, but will have to swap disks when prompted)
 7)   Place Formatted floppy in drive 2
 8)   Select all defaults - when the message 'Insert BOTH disks and press
      RETURN' is presented, press RETURN.  At track 17 you will be prompted
      to flip the data disk (in drive 2) over - do it!

 9)   When the copying is done, transfer both sides of the data disk to
      disk images using one of methods described earlier in this text.
      Call the front of the disk FRONT.DSK and the back BACK.DSK

 10)  Load the disk image for SST into disk 1 of the emulator.
 11)  Copy the blank.nib image to an appropriate name (e.g. game.nib)
 12)  Load the game.nib image into disk 2 of the emulator.

 (Steps 13 - 18 are necessary due to a bug in SST which fails to move the
  disk arm back to track 0 on drive 2)

 13)  Reboot the emulator
 14)  Select 'E' for Copy II+ 5.0 from the boot menu (CAPS LOCK MUST BE ON!)
 15)  Go to Sector Editor
 16)  Select Disk B
 17)  Type the letter 'R' to read a sector
 18)  Type '0' for the Track and '0' for the sector pressing ENTER after each.
 19)  Reboot the emulator

 20)  Choose 'B' for EDD/SST from the boot menu (CAPS LOCK MUST BE ON!)
 21)  Choose 'Pirate a Disk'
 22)  Choose '3' to unpack a disk
 23)  Choose '1' for packed parms
      (You may choose '2' for your parms, but you need to know what you
       are doing!  If you want to nibble count the track, choose the
       manual nibble count option when it is presented.  This will not
       work right now because the emulators do not have any way of changing
       individual track lengths on the fly.  This means that any disks that
       need precise track lengths will not work until the new standard is
       implemented)

 24)  Use all default options
      (You can unpack only certain tracks if you desire)
 25)  When the message 'Insert BOTH disks, then press RETURN' appears,
      insert the FRONT.DSK image in drive 1 and press RETURN
 26)  When the message 'Turn DATA disk over and press RETURN' appears,
      insert the BACK.DSK image in drive 1 and press RETURN
 27)  When process is finished, I would either close the emulator down
      or put another image in drive 2 to make sure the .nib file gets
      closed properly.
 28)  Insert the new .nib file in drive 1 of the emulator and reboot it
      to see if it works.

That's it! Easy huh? :^)

                                Saltine


Return to the Table Of Contents

hr SST


11) Why to produce a clean SST source code?.


A clean source code is required to upgrade the program (e.g. store .nib files directly on a prodos device) and/or to create a new disk format which can use all the EDD's features (nibble count, tracks synchronization, 1/4 1/2 3/4 tracks).

Messages from comp.sys.apple2 (apr 2004) about SST:

**********

Andy McFadden wrote:

...
> Each disk side turns into two, which are then transferred
> like any other unprotected disk (e.g. with ADT over a serial
> cable, or if you have the hardware, with ShrinkIt and
> AppleTalk).
> The two images are then recombined by running SST in an
> emulator or <shameless plug> with CiderPress.

> It's a slow and somewhat painful process...
...

**********

Rubywand wrote:

...
> Unfortunately, Saltine's Super Transcopy (SST) was designed to
> transfer copy-protected disks using just 5.25" media.
> It was not designed to create .nib files you could store on
> 800k diskettes or hard disk. So, creating a .nib with SST
> involves a transfer and combining process such as described by Andy.
...

**********

Ed Eastman wrote:

...
> SST is a cool program... Essentially it uses the EDD source code
> to read a track and analyse it to find start and arbitrarily
> end it at a fixed length.

> There is no reason that someone couldn't write a Q&D program
> to do that without the transfer stage.
...

Note (Deckard): Q&D = quick and dirty


Return to the Table Of Contents

hr SST


12) Format of the 16 sectors disks created by SST.


16 SECTORS FLOPPIES CREATED BY SST
==================================

According to Saltine's documentation, you have to keep the default parameters (start/end tracks
and step) if you want to use SST.

So when SST reads an original disk, it reads these tracks:

(DC = DeCimal and HX = HeXadecimal modes)

Genuine disk
----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
----------------------------------------------------------------------------------------------------------------

Internal use (EDD)
----------------------------------------------------------------------------------------------------------------
|HX|00|04|08|0C|10|14|18|1C|20|24|28|2C|30|34|38|3C|40|44|48|4C|50|54|58|5C|60|64|68|6C|70|74|78|7C|80|84|88|HX|
----------------------------------------------------------------------------------------------------------------

Apple II Memory use => $7800-$93FF : track buffer (len $1C00)


TRACK $00 TO $22 : "VERTICAL STORAGE".
=====================================

Writings: ASC disks, ASC tracks, DESC sectors:

Disk #1:

T$00 S$0F : begin of track buffer
T$00 S$0E
...
T$00 S$01
T$00 S$00
T$01 S$0F
...
T$01 S$04 : end of track buffer
T$01 S$03 : extra sector #1
T$01 S$02 : extra sector #2
T$01 S$01 : extra sector #3
T$02 S$0F : begin of track buffer
...
T$03 S$04 : end of track buffer
T$03 S$03 : extra sector #1
T$03 S$02 : extra sector #2
T$03 S$01 : extra sector #3
...
T$22 S$0F : begin of track buffer
...
T$22 S$00

Disk #2:

T$00 S$0F
...
T$00 S$04 : end of track buffer
T$00 S$03 : extra sector #1
T$00 S$02 : extra sector #2
T$00 S$01 : extra sector #3
T$01 S$0F : begin of track data
...
T$21 S$0F : begin of track buffer
T$21 S$0E
...
T$22 S$04 : end of track buffer
T$22 S$03 : extra sector #1
T$22 S$02 : extra sector #2
T$22 S$01 : extra sector #3


Format of the 1st floppy created by SST (original track storage):

(I've written the genuine track number of the original disk in every sector)

For every track of the original disk, SST saves 3 additionnal buffers on the duplicate disk:

Extra sector B1 = Copy of the PreWrite buffer ($B100-$B1FF)
Extra sector B2 = Copy of the Program Variables buffer ($B200-$B2FF)
Extra sector B3 = Copy of the Parameter buffer ($B300-$B3FF)
XX = Not Used

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*00|XX|01|XX|02|XX|03|XX|04|XX|05|XX|06|XX|07|XX|08|XX|09|XX|0A|XX|0B|XX|0C|XX|0D|XX|0E|XX|0F|XX|10|XX|11*00|
---*--------------------------------------------------------------------------------------------------------*---
|01*00|B3|01|B3|02|B3|03|B3|04|B3|05|B3|06|B3|07|B3|08|B3|09|B3|0A|B3|0B|B3|0C|B3|0D|B3|0E|B3|0F|B3|10|B3|11*01|
---*--------------------------------------------------------------------------------------------------------*---
|02*00|B2|01|B2|02|B2|03|B2|04|B2|05|B2|06|B2|07|B2|08|B2|09|B2|0A|B2|0B|B2|0C|B2|0D|B2|0E|B2|0F|B2|10|B2|11*02|
---*--------------------------------------------------------------------------------------------------------*---
|03*00|B1|01|B1|02|B1|03|B1|04|B1|05|B1|06|B1|07|B1|08|B1|09|B1|0A|B1|0B|B1|0C|B1|0D|B1|0E|B1|0F|B1|10|B1|11*03|
---*--------------------------------------------------------------------------------------------------------*---
|04*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*04|
---*--------------------------------------------------------------------------------------------------------*---
|05*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*05|
---*--------------------------------------------------------------------------------------------------------*---
|06*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*06|
---*--------------------------------------------------------------------------------------------------------*---
|07*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*07|
---*--------------------------------------------------------------------------------------------------------*---
|08*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*08|
---*--------------------------------------------------------------------------------------------------------*---
|09*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*09|
---*--------------------------------------------------------------------------------------------------------*---
|0A*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*0A|
---*--------------------------------------------------------------------------------------------------------*---
|0B*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*0B|
---*--------------------------------------------------------------------------------------------------------*---
|0C*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*0C|
---*--------------------------------------------------------------------------------------------------------*---
|0D*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*0D|
---*--------------------------------------------------------------------------------------------------------*---
|0E*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*0E|
---*--------------------------------------------------------------------------------------------------------*---
|0F*00|00|01|01|02|02|03|03|04|04|05|05|06|06|07|07|08|08|09|09|0A|0A|0B|0B|0C|0C|0D|0D|0E|0E|0F|0F|10|10|11*0F|
---**********************************************************************************************************---
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------

Format of the 2nd floppy created by SST (original track storage):
Same logic: I wrote only the original T$11 and T$22... (I'm tired, it's 2:43 AM...)

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|22|XX*00|
---*--------------------------------------------------------------------------------------------------------*---
|01*B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|22|B3*01|
---*--------------------------------------------------------------------------------------------------------*---
|02*B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|22|B2*02|
---*--------------------------------------------------------------------------------------------------------*---
|03*B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|22|B1*03|
---*--------------------------------------------------------------------------------------------------------*---
|04*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*04|
---*--------------------------------------------------------------------------------------------------------*---
|05*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*05|
---*--------------------------------------------------------------------------------------------------------*---
|06*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*06|
---*--------------------------------------------------------------------------------------------------------*---
|07*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*07|
---*--------------------------------------------------------------------------------------------------------*---
|08*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*08|
---*--------------------------------------------------------------------------------------------------------*---
|09*11|12|12|13|13|14|14|15|15|16|16|17|17|18|18|19|19|1A|1A|1B|1B|1C|1C|1D|1D|1E|1E|1F|1F|20|20|21|21|22|22*09|
---*--------------------------------------------------------------------------------------------------------*---
|0A*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*0A|
---*--------------------------------------------------------------------------------------------------------*---
|0B*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*0B|
---*--------------------------------------------------------------------------------------------------------*---
|0C*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*0C|
---*--------------------------------------------------------------------------------------------------------*---
|0D*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*0D|
---*--------------------------------------------------------------------------------------------------------*---
|0E*11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |22|22*0E|
---*--------------------------------------------------------------------------------------------------------*---
|0F*11|12|12|13|13|14|14|15|15|16|16|17|17|18|18|19|19|1A|1A|1B|1B|1C|1C|1D|1D|1E|1E|1F|1F|20|20|21|21|22|22*0F|
---**********************************************************************************************************---
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------

Disk #1 (memory page of track buffer) : e.g. for original T$00 and T$11

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*87|XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|87*00|
---*--------------------------------------------------------------------------------------------------------*---
|01*86|B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|86*01|
---*--------------------------------------------------------------------------------------------------------*---
|02*85|B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|85*02|
---*--------------------------------------------------------------------------------------------------------*---
|03*84|B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|84*03|
---*--------------------------------------------------------------------------------------------------------*---
|04*83|93|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |83*04|
---*--------------------------------------------------------------------------------------------------------*---
|05*82|92|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |82*05|
---*--------------------------------------------------------------------------------------------------------*---
|06*81|91|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |81*06|
---*--------------------------------------------------------------------------------------------------------*---
|07*80|90|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |80*07|
---*--------------------------------------------------------------------------------------------------------*---
|08*7F|8F|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7F*08|
---*--------------------------------------------------------------------------------------------------------*---
|09*7E|8E|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7E*09|
---*--------------------------------------------------------------------------------------------------------*---
|0A*7D|8D|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7D*0A|
---*--------------------------------------------------------------------------------------------------------*---
|0B*7C|8C|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7C*0B|
---*--------------------------------------------------------------------------------------------------------*---
|0C*7B|8B|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7B*0C|
---*--------------------------------------------------------------------------------------------------------*---
|0D*7A|8A|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7A*0D|
---*--------------------------------------------------------------------------------------------------------*---
|0E*79|89|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |79*0E|
---*--------------------------------------------------------------------------------------------------------*---
|0F*78|88|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |78*0F|
---**********************************************************************************************************---
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------

Disk #2 (memory page of track buffer) : e.g. for original T$11 and T$22

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|  |XX|87|XX*00|
---*--------------------------------------------------------------------------------------------------------*---
|01*B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|  |B3|86|B3*01|
---*--------------------------------------------------------------------------------------------------------*---
|02*B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|  |B2|85|B2*02|
---*--------------------------------------------------------------------------------------------------------*---
|03*B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|  |B1|84|B1*03|
---*--------------------------------------------------------------------------------------------------------*---
|04*93|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |83|93*04|
---*--------------------------------------------------------------------------------------------------------*---
|05*92|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |82|92*05|
---*--------------------------------------------------------------------------------------------------------*---
|06*91|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |81|91*06|
---*--------------------------------------------------------------------------------------------------------*---
|07*90|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |80|90*07|
---*--------------------------------------------------------------------------------------------------------*---
|08*8F|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7F|8F*08|
---*--------------------------------------------------------------------------------------------------------*---
|09*8E|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7E|8E*09|
---*--------------------------------------------------------------------------------------------------------*---
|0A*8D|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7D|8D*0A|
---*--------------------------------------------------------------------------------------------------------*---
|0B*8C|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7C|8C*0B|
---*--------------------------------------------------------------------------------------------------------*---
|0C*8B|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7B|8B*0C|
---*--------------------------------------------------------------------------------------------------------*---
|0D*8A|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |7A|8A*0D|
---*--------------------------------------------------------------------------------------------------------*---
|0E*89|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |79|89*0E|
---*--------------------------------------------------------------------------------------------------------*---
|0F*88|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |78|88*0F|
---**********************************************************************************************************---
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------

TRACK $23 : "HORIZONTAL STORAGE".
================================


Saltine wrote additional (undocumented) code to store
track $23 (or more?) in the holes (sectors $00) left by the normal process T$00-T$22.
See routine SBS_TRK35 in the SST.SUBS file.

Genuine disk
----------
|DC|35|DC|
----------
|HX|23|HX|
----------

Internal use (EDD)
----------
|HX|8C|HX|
----------


Writings: ASC disks, ASC tracks, sector 0:

Disk #1

T$01 S$00 : begin of track buffer
T$03 S$00
T$05 S$00
...
T$21 S$00


Disk #2

T$00 S$00
T$02 S$00
T$04 S$00
...
T$14 S$00 : end of track buffer
T$16 S$00 : extra sector #1 -> B1 = Copy of the PreWrite buffer ($B100-$B1FF)
T$18 S$00 : extra sector #2 -> B2 = Copy of the Program Variables buffer ($B200-$B2FF)
T$1A S$00 : extra sector #3 -> B3 = Copy of the Parameter buffer ($B300-$B3FF)

XX = not used (at all)

Disk #1 (original track storage)

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  *00|
---*--------------------------------------------------------------------------------------------------------*---


Disk #2 (original track storage)

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |23|  |B1|  |B2|  |B3|  |XX|  |XX|  |XX|  |XX*00|
---*--------------------------------------------------------------------------------------------------------*---

Disk #1 (memory page of track buffer)

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*  |78|  |79|  |7A|  |7B|  |7C|  |7D|  |7E|  |7F|  |80|  |81|  |82|  |83|  |84|  |85|  |86|  |87|  |88|  *00|
---*--------------------------------------------------------------------------------------------------------*---


Disk #2 (memory page of track buffer)

----------------------------------------------------------------------------------------------------------------
|DC|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|DC|
----------------------------------------------------------------------------------------------------------------
|HX|00|01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|0E|0F|10|11|12|13|14|15|16|17|18|19|1A|1B|1C|1D|1E|1F|20|21|22|HX|
---**********************************************************************************************************---
|00*89|  |8A|  |8B|  |8C|  |8D|  |8E|  |8F|  |90|  |91|  |92|  |93|  |B1|  |B2|  |B3|  |XX|  |XX|  |XX|  |XX*00|
---*--------------------------------------------------------------------------------------------------------*---


Return to the Table Of Contents

hr SST


13) .


.



Return to the Table Of Contents

hr SST


14) .


.



Return to the Table Of Contents

hr SST


15) .


.



Return to the Table Of Contents