:asm 1 2 ; LST OFF 3 ORG $B500 ; SST.CONTROLER 4 ; into EDD's expansion space ($B500-$B6FF) 5 6 ******************************** 7 * * 8 * SST CONTROLLER * 9 * (c) Saltine * 10 * Source by Deckard * 11 * * 12 ******************************** 13 14 * EDD.OPT2.OPT1 15 16 COPYDISK EQU $1929 ; back up a disk 17 TRKR EQU $19C0 ; track read 18 TRKWV EQU $1A04 ; track write/verify 19 20 * SST.SUBS 21 22 SBS_SSTTRKR EQU $1DFF ; new TRKR routine (exec) 23 SBS_SSTTRKWV EQU $1E09 ; new TRKWV routine (exec) 24 SBS_CHOOSE EQU $1FAD ; select option (pirate a disk/unpack) 25 SBS_INIT EQU $21A4 ; exec initialize a disk 26 27 28 *------------------------------* 29 * * 30 * Pirate a disk * 31 * Entry point * 32 * * 33 *------------------------------* 34 35 * Option 1 of main menu 36 37 CTL_PIRATEDSK B500: 20 27 B5 38 HB500 JSR CTL_MOVE ; save EDD code, retrieve SST code B503: 20 AD 1F 39 JSR SBS_CHOOSE ; select SST sub-option (EDD copy/pack/unpack) B506: 20 27 B5 40 JSR CTL_MOVE ; save SST code, retrieve EDD code B509: 4C 29 19 41 JMP COPYDISK ; go EDD. Next controller entry is CTL_NEWTRKR B50C: 60 42 RTS 43 44 45 *------------------------------* 46 * * 47 * Initialize a disk * 48 * Entry point * 49 * * 50 *------------------------------* 51 52 * Option 9 of main menu 53 54 CTL_INITDSK B50D: 20 27 B5 55 HB50D JSR CTL_MOVE ; save EDD code, retrieve SST code B510: 20 A4 21 56 JSR SBS_INIT ; exec command B513: 20 27 B5 57 JSR CTL_MOVE ; save SST code, retrieve EDD code B516: 60 58 RTS 59 60 61 *------------------------------* 62 * * 63 * Replacement of EDD TRKR * 64 * Entry point * 65 * (COPYDISK module) * 66 * * 67 *------------------------------* 68 B517: 20 27 B5 69 CTL_NEWTRKR JSR CTL_MOVE ; save EDD code, retrieve SST code B51A: 4C FF 1D 70 JMP SBS_SSTTRKR ; exec new TRKR routine 71 72 73 *------------------------------* 74 * * 75 * Replacement of EDD TRKWV * 76 * Entry point * 77 * (COPYDISK module) * 78 * * 79 *------------------------------* 80 B51D: 20 27 B5 81 CTL_NEWTRKWV JSR CTL_MOVE ; save EDD code, retrieve SST code B520: 4C 09 1E 82 JMP SBS_SSTTRKWV ; exec new TRKWV routine 83 84 85 *------------------------------* 86 * * 87 * Go to CTL_MOVE * 88 * * 89 *------------------------------* 90 B523: 20 27 B5 91 CTL_DO_MOVE JSR CTL_MOVE ; restore EDD routines & SST subs B526: 60 92 RTS 93 94 95 *------------------------------* 96 * * 97 * Switch SST subs <=> EDD * 98 * * 99 *------------------------------* 100 101 * Switch SST bank 2 ($E000-$F4FF) <=> EDD ($1D00-$31FF) 102 B527: A9 E0 103 CTL_MOVE LDA #>$E000 ; from source pointer ($3C) high B529: 85 3D 104 STA $3D B52B: A9 1D 105 LDA #>$1D00 ; to target pointer ($3E) high B52D: 85 3F 106 STA $3F B52F: A9 00 107 LDA #0 ; low B531: 85 3C 108 STA $3C B533: 85 3E 109 STA $3E B535: A9 F5 110 LDA #>$F500 ; high last buf+1 B537: 85 42 111 STA $42 112 113 *------------------------------* 114 * * 115 * Memory Exchange module * 116 * * 117 *------------------------------* 118 119 * Switch 2 parts of memory (1 in bank 2) 120 B539: 2C 83 C0 121 CTL_XCH1 BIT $C083 ; read/write bank 2 ($D000-$DFFF) B53C: 2C 83 C0 122 BIT $C083 123 B53F: A0 00 124 LDY #0 B541: B1 3C 125 :1 LDA ($3C),Y ; get 1 byte from first buffer B543: 8D 6C B5 126 STA CTL_SAVBYTE ; save it B546: B1 3E 127 LDA ($3E),Y ; get 1 byte from 2nd buffer B548: 91 3C 128 STA ($3C),Y ; store it in 1st buffer B54A: AD 6C B5 129 LDA CTL_SAVBYTE ; restore saved byte B54D: 91 3E 130 STA ($3E),Y ; store it in 2nd buffer B54F: C8 131 INY B550: D0 EF 132 BNE :1 133 B552: E6 3D 134 INC $3D ; next byte of the buffers B554: E6 3F 135 INC $3F B556: A5 3D 136 LDA $3D B558: C5 42 137 CMP $42 ; end? B55A: D0 E5 138 BNE :1 ; no 139 B55C: 2C 81 C0 140 BIT $C081 ; read rom / write bank 2 B55F: 60 141 RTS 142 143 *------------------------------* 144 * * 145 * Go to EDD TRKR * 146 * (track read) * 147 * * 148 *------------------------------* 149 B560: 20 27 B5 150 CTL_EDDREAD JSR CTL_MOVE ; save SST code, retrieve EDD code B563: 4C C0 19 151 JMP TRKR ; next controller entry is CTL_NEWTRKWV 152 153 154 *------------------------------* 155 * * 156 * Go to EDD TRWV * 157 * (track write/verify) * 158 * * 159 *------------------------------* 160 B566: 20 27 B5 161 CTL_EDDWRITE JSR CTL_MOVE ; save SST code, retrieve EDD code B569: 4C 04 1A 162 JMP TRKWV 163 164 *------------------------------* 165 * * 166 * VARIABLES * 167 * * 168 *------------------------------* 169 B56C: 00 170 CTL_SAVBYTE DFB 0 ; for xchange mod B56D: 00 171 CTL_VAR1 DFB 0 ; unpack option [0,1] B56E: 00 172 CTL_VAR2 DFB 0 ; [$00 or $FF] B56F: 00 173 CTL_VAR3 DFB 0 ; pirate a disk option [0,2] 174 B570: 00 175 CTL_POS DFB 0 ; original slot B571: 00 176 CTL_PDS DFB 0 : duplicate slot B572: 00 177 CTL_POD DFB 0 ; original drive B573: 00 178 CTL_PDD DFB 0 ; duplicate drive B574: 00 179 CTL_DRVCOUNT DFB 0 ; 1 or 2 drives B575: 00 180 CTL_STARTRK DFB 0 ; start track B576: 00 181 CTL_ENDTRK DFB 0 ; end track B577: 00 182 CTL_STEP DFB 0 ; step B578: 00 183 CTL_NBLCFLG DFB 0 ; nibble count flag B579: 00 184 CTL_SYNCFLG DFB 0 ; synchronized track flag B57A: 00 185 CTL_SIDE DFB 0 ; "side" B57B: 00 186 CTL_TRACK DFB 0 ; track 187 B57C: 00 00 00 188 DS \,0 B57F: 00 00 00 00 B583: 00 00 00 00 B587: 00 00 00 00 B58B: 00 00 00 00 B58F: 00 00 00 00 B593: 00 00 00 00 B597: 00 00 00 00 B59B: 00 00 00 00 B59F: 00 00 00 00 B5A3: 00 00 00 00 B5A7: 00 00 00 00 B5AB: 00 00 00 00 B5AF: 00 00 00 00 B5B3: 00 00 00 00 B5B7: 00 00 00 00 B5BB: 00 00 00 00 B5BF: 00 00 00 00 B5C3: 00 00 00 00 B5C7: 00 00 00 00 B5CB: 00 00 00 00 B5CF: 00 00 00 00 B5D3: 00 00 00 00 B5D7: 00 00 00 00 B5DB: 00 00 00 00 B5DF: 00 00 00 00 B5E3: 00 00 00 00 B5E7: 00 00 00 00 B5EB: 00 00 00 00 B5EF: 00 00 00 00 B5F3: 00 00 00 00 B5F7: 00 00 00 00 B5FB: 00 00 00 00 B5FF: 00 B600: 00 00 00 189 DS $100,0 B603: 00 00 00 00 B607: 00 00 00 00 B60B: 00 00 00 00 B60F: 00 00 00 00 B613: 00 00 00 00 B617: 00 00 00 00 B61B: 00 00 00 00 B61F: 00 00 00 00 B623: 00 00 00 00 B627: 00 00 00 00 B62B: 00 00 00 00 B62F: 00 00 00 00 B633: 00 00 00 00 B637: 00 00 00 00 B63B: 00 00 00 00 B63F: 00 00 00 00 B643: 00 00 00 00 B647: 00 00 00 00 B64B: 00 00 00 00 B64F: 00 00 00 00 B653: 00 00 00 00 B657: 00 00 00 00 B65B: 00 00 00 00 B65F: 00 00 00 00 B663: 00 00 00 00 B667: 00 00 00 00 B66B: 00 00 00 00 B66F: 00 00 00 00 B673: 00 00 00 00 B677: 00 00 00 00 B67B: 00 00 00 00 B67F: 00 00 00 00 B683: 00 00 00 00 B687: 00 00 00 00 B68B: 00 00 00 00 B68F: 00 00 00 00 B693: 00 00 00 00 B697: 00 00 00 00 B69B: 00 00 00 00 B69F: 00 00 00 00 B6A3: 00 00 00 00 B6A7: 00 00 00 00 B6AB: 00 00 00 00 B6AF: 00 00 00 00 B6B3: 00 00 00 00 B6B7: 00 00 00 00 B6BB: 00 00 00 00 B6BF: 00 00 00 00 B6C3: 00 00 00 00 B6C7: 00 00 00 00 B6CB: 00 00 00 00 B6CF: 00 00 00 00 B6D3: 00 00 00 00 B6D7: 00 00 00 00 B6DB: 00 00 00 00 B6DF: 00 00 00 00 B6E3: 00 00 00 00 B6E7: 00 00 00 00 B6EB: 00 00 00 00 B6EF: 00 00 00 00 B6F3: 00 00 00 00 B6F7: 00 00 00 00 B6FB: 00 00 00 00 B6FF: 00 190 191 SAV OBJ/DECKARD/SST.CONTROLER Object saved as OBJ/DECKARD/SST.CONTROLER,A$B500,L$0200,BIN --End assembly, 512 bytes, Errors: 0 Symbol table - alphabetical order: COPYDISK=$1929 ? CTL_DO_MOVE=$B523 ? CTL_DRVCOUNT=$B574 ? CTL_EDDREAD=$B560 ? CTL_EDDWRITE=$B566 ? CTL_ENDTRK=$B576 ? CTL_INITDSK=$B50D CTL_MOVE=$B527 ? CTL_NBLCFLG=$B578 ? CTL_NEWTRKR=$B517 ? CTL_NEWTRKWV=$B51D ? CTL_PDD =$B573 ? CTL_PDS =$B571 ? CTL_PIRATEDSK=$B500 ? CTL_POD =$B572 ? CTL_POS =$B570 CTL_SAVBYTE=$B56C ? CTL_SIDE=$B57A ? CTL_STARTRK=$B575 ? CTL_STEP=$B577 ? CTL_SYNCFLG=$B579 ? CTL_TRACK=$B57B ? CTL_VAR1=$B56D ? CTL_VAR2=$B56E ? CTL_VAR3=$B56F ? CTL_XCH1=$B539 ? HB500 =$B500 ? HB50D =$B50D SBS_CHOOSE=$1FAD SBS_INIT=$21A4 SBS_SSTTRKR=$1DFF SBS_SSTTRKWV=$1E09 TRKR =$19C0 TRKWV =$1A04 Symbol table - numerical order: COPYDISK=$1929 TRKR =$19C0 TRKWV =$1A04 SBS_SSTTRKR=$1DFF SBS_SSTTRKWV=$1E09 SBS_CHOOSE=$1FAD SBS_INIT=$21A4 ? CTL_PIRATEDSK=$B500 ? HB500 =$B500 ? CTL_INITDSK=$B50D ? HB50D =$B50D ? CTL_NEWTRKR=$B517 ? CTL_NEWTRKWV=$B51D ? CTL_DO_MOVE=$B523 CTL_MOVE=$B527 ? CTL_XCH1=$B539 ? CTL_EDDREAD=$B560 ? CTL_EDDWRITE=$B566 CTL_SAVBYTE=$B56C ? CTL_VAR1=$B56D ? CTL_VAR2=$B56E ? CTL_VAR3=$B56F ? CTL_POS =$B570 ? CTL_PDS =$B571 ? CTL_POD =$B572 ? CTL_PDD =$B573 ? CTL_DRVCOUNT=$B574 ? CTL_STARTRK=$B575 ? CTL_ENDTRK=$B576 ? CTL_STEP=$B577 ? CTL_NBLCFLG=$B578 ? CTL_SYNCFLG=$B579 ? CTL_SIDE=$B57A ? CTL_TRACK=$B57B