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.

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

|

|
EDD 4.2 Main Menu
|
SST Main Menu
|

|

|
SST Pirate a disk
|
SST Unpack
|

|
EDD/SST Get parms
screen (default values)
|

|

|
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
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
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
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
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
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
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
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
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
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
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
13) .
.
Return to the Table Of Contents
14) .
.
Return to the Table Of Contents
15) .
.
Return to the Table Of Contents