Rev 890 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 890 | Rev 1186 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | 1 | ||
| 2 | ;LAST UPDATE: 01.12.2014 savelij | 
            2 | ; LAST UPDATE: 06.02.2025 savelij | 
          
| 3 | 3 | ||
| 4 | ;ВХОДНЫЕ ПАРАМЕТРЫ ОБЩИЕ: | 
            4 | ; входные параметры общие: | 
          
| 5 | ;HL-АДРЕС ЗАГРУЗКИ В ПАМЯТЬ | 
            5 | ; HL-адрес загрузки в память | 
          
| 6 | ;BCDE-32-Х БИТНЫЙ НОМЕР СЕКТОРА | 
            6 | ; BCDE-32-х битный номер сектора | 
          
| 7 | ;A-КОЛИЧЕСТВО БЛОКОВ (БЛОК=512 БАЙТ) | 
            7 | ; A-количество блоков (блок=512 байт) | 
          
| 8 | ;ТОЛЬКО ДЛЯ МНОГОБЛОЧНОЙ ЗАПИСИ/ЧТЕНИИ | 
            8 | ; только для многоблочной записи/чтении | 
          
| 9 | 9 | ||
| 10 | ;ОШИБКИ ВЫДАВАЕМЫЕ НА ВЫХОДЕ: | 
            10 | ; ошибки выдаваемые на выходе: | 
          
| 11 | ;A=0-ИНИЦИАЛИЗАЦИЯ ПРОШЛА УСПЕШНО | 
            11 | ; A=0-инициализация прошла успешно | 
          
| 12 | ;A=1-КАРТА НЕ НАЙДЕНА ИЛИ НЕ ОТВЕТИЛА | 
            12 | ; A=1-карта не найдена или не ответила | 
          
| 13 | 13 | ||
| 14 | ;ОБЩАЯ ТОЧКА ВХОДА ДЛЯ РАБОТЫ С SD | 
            14 | ;общая точка входа для работы с SD | 
          
| 15 | COMSDZ EX AF,AF'  | 
            15 | COMSDZ EX AF,AF'  | 
          
| 16 |                 LD A,IYL | 
            16 |                 LD A,IYL | 
          
| 17 |                 AND A | 
            17 |                 AND A | 
          
| 18 |                 LD A,(NEXTBYTERST8) | 
            18 |                 LD A,(NEXTBYTERST8) | 
          
| 19 |                 JR Z,COMSDZ1 | 
            19 |                 JR Z,COMSDZ1 | 
          
| Line 47... | Line 47... | ||
| 47 | JR NZ,RET4SD1  | 
            47 | JR NZ,RET4SD1  | 
          
| 48 | LD (RREG_L),HL  | 
            48 | LD (RREG_L),HL  | 
          
| 49 | EX (SP),HL  | 
            49 | EX (SP),HL  | 
          
| 50 | LD (RREG_F),HL  | 
            50 | LD (RREG_F),HL  | 
          
| 51 | EX (SP),HL  | 
            51 | EX (SP),HL  | 
          
| - | 52 | RET4SD1  | 
          |
| 52 | RET4SD1 PEC_ON M_SHADOW_BF  | 
            53 | PEC_ON M_SHADOW_BF  | 
          
| 53 | POP AF  | 
            54 | POP AF  | 
          
| 54 |                 RET | 
            55 |                 RET | 
          
| 55 | 56 | ||
| 56 | TABLSDZ DW SD_INIT ;0 ПАРАМЕТРОВ НЕ ТРЕБУЕТ, НА ВЫХОДЕ A  | 
            57 | TABLSDZ DW SD_INIT ; 0 параметров не требует, на выходе 'A'  | 
          
| 57 |                                                 ;СМОТРИ ВЫШЕ ПЕРВЫЕ 2 ЗНАЧЕНИЯ | 
            58 |                                                 ; смотри выше первые 2 значения | 
          
| 58 | DW SD_CMP ;1 ПРОВЕРКА НАЛИЧИЯ SD КАРТЫ  | 
            59 | DW SD_CMP ; 1 проверка наличия SD карты  | 
          
| 59 | DW RDMULTI ;2 ЧТЕНИЕ СЕКТОРОВ, КОЛ-ВО В "A"  | 
            60 | DW RDMULTI ; 2 чтение секторов, кол-во в 'A'  | 
          
| 60 | DW WRMULTI ;3 ЗАПИСЬ СЕКТОРОВ  | 
            61 | DW WRMULTI ; 3 запись секторов, кол-во в 'A'  | 
          
| 61 | 62 | ||
| 62 | SD_INIT         CALL CS_HIGH | 
            63 | SD_INIT         CALL CS_HIGH | 
          
| 63 | LD BC,P_DATA  | 
            64 | LD BC,P_DATA  | 
          
| 64 | LD DE,0X10FF  | 
            65 | LD DE,0x10FF  | 
          
| 65 | OUT (C),E  | 
            66 | OUT (C),E  | 
          
| 66 | DEC D  | 
            67 | DEC D  | 
          
| 67 | JR NZ,$-3  | 
            68 | JR NZ,$-3  | 
          
| 68 | XOR A  | 
            69 | XOR A  | 
          
| 69 | EX AF,AF'  | 
            70 | EX AF,AF'  | 
          
| Line 87... | Line 88... | ||
| 87 |                 NOP | 
            88 |                 NOP | 
          
| 88 |                 IN H,(C) | 
            89 |                 IN H,(C) | 
          
| 89 |                 LD HL,0 | 
            90 |                 LD HL,0 | 
          
| 90 |                 BIT 2,A | 
            91 |                 BIT 2,A | 
          
| 91 |                 JR NZ,ZAW006 | 
            92 |                 JR NZ,ZAW006 | 
          
| 92 |                 LD H,0X40 | 
            93 |                 LD H,0x40 | 
          
| 93 | ZAW006          LD A,CMD_55 | 
            94 | ZAW006          LD A,CMD_55 | 
          
| 94 |                 CALL OUT_COM | 
            95 |                 CALL OUT_COM | 
          
| 95 |                 CALL IN_OOUT | 
            96 |                 CALL IN_OOUT | 
          
| 96 |                 in (c) ;in f,(c) | 
            97 |                 in (c) ;in f,(c) | 
          
| 97 |                 in (c) ;in f,(c) | 
            98 |                 in (c) ;in f,(c) | 
          
| Line 103... | Line 104... | ||
| 103 |                 OUT (C),L | 
            104 |                 OUT (C),L | 
          
| 104 |                 NOP | 
            105 |                 NOP | 
          
| 105 |                 OUT (C),L | 
            106 |                 OUT (C),L | 
          
| 106 |                 NOP | 
            107 |                 NOP | 
          
| 107 |                 OUT (C),L | 
            108 |                 OUT (C),L | 
          
| 108 |                 LD A,0XFF | 
            109 |                 LD A,0xFF | 
          
| 109 |                 OUT (C),A | 
            110 |                 OUT (C),A | 
          
| 110 |                 CALL IN_OOUT | 
            111 |                 CALL IN_OOUT | 
          
| 111 |                 AND A | 
            112 |                 AND A | 
          
| 112 |                 JR NZ,ZAW006 | 
            113 |                 JR NZ,ZAW006 | 
          
| 113 | ZAW004          LD A,CMD_59 | 
            114 | ZAW004          LD A,CMD_59 | 
          
| Line 143... | Line 144... | ||
| 143 |                 POP AF | 
            144 |                 POP AF | 
          
| 144 |                 RET | 
            145 |                 RET | 
          
| 145 | 146 | ||
| 146 | OUTCOM          CALL CS__LOW | 
            147 | OUTCOM          CALL CS__LOW | 
          
| 147 |                 PUSH BC | 
            148 |                 PUSH BC | 
          
| 148 |                 LD BC,0X0600+P_DATA | 
            149 |                 LD BC,0x0600+P_DATA | 
          
| 149 |                 OTIR | 
            150 |                 OTIR | 
          
| 150 |                 POP BC | 
            151 |                 POP BC | 
          
| 151 |                 RET | 
            152 |                 RET | 
          
| 152 | 153 | ||
| 153 | OUT_COM         PUSH BC | 
            154 | OUT_COM         PUSH BC | 
          
| Line 223... | Line 224... | ||
| 223 |                 OUT (C),L | 
            224 |                 OUT (C),L | 
          
| 224 |                 NOP | 
            225 |                 NOP | 
          
| 225 |                 OUT (C),D | 
            226 |                 OUT (C),D | 
          
| 226 |                 NOP | 
            227 |                 NOP | 
          
| 227 |                 OUT (C),E | 
            228 |                 OUT (C),E | 
          
| 228 |                 LD A,0XFF | 
            229 |                 LD A,0xFF | 
          
| 229 |                 OUT (C),A | 
            230 |                 OUT (C),A | 
          
| 230 |                 POP BC | 
            231 |                 POP BC | 
          
| 231 |                 POP DE | 
            232 |                 POP DE | 
          
| 232 |                 POP HL | 
            233 |                 POP HL | 
          
| 233 |                 RET | 
            234 |                 RET | 
          
| 234 | 235 | ||
| 235 | IN_OOUT         PUSH DE | 
            236 | IN_OOUT         PUSH DE | 
          
| 236 |                 LD DE,0X30FF | 
            237 |                 LD DE,0x30FF | 
          
| 237 | IN_WAIT         IN A,(P_DATA) | 
            238 | IN_WAIT         IN A,(P_DATA) | 
          
| 238 |                 CP E | 
            239 |                 CP E | 
          
| 239 |                 JR NZ,IN_EXIT | 
            240 |                 JR NZ,IN_EXIT | 
          
| 240 | IN_NEXT         DEC D | 
            241 | IN_NEXT         DEC D | 
          
| 241 |                 JR NZ,IN_WAIT | 
            242 |                 JR NZ,IN_WAIT | 
          
| 242 | IN_EXIT         POP DE | 
            243 | IN_EXIT         POP DE | 
          
| 243 |                 RET | 
            244 |                 RET | 
          
| 244 | 245 | ||
| 245 | CMD00           DB 0X40,0X00,0X00,0X00,0X00,0X95                ;GO_IDLE_STATE | 
            246 | CMD00           DB 0x40,0x00,0x00,0x00,0x00,0x95                ;GO_IDLE_STATE | 
          
| 246 | CMD08           DB 0X48,0X00,0X00,0X01,0XAA,0X87                ;SEND_IF_COND | 
            247 | CMD08           DB 0x48,0x00,0x00,0x01,0xAA,0x87                ;SEND_IF_COND | 
          
| 247 | CMD16           DB 0X50,0X00,0X00,0X02,0X00,0XFF                ;SET_BLOCKEN | 
            248 | CMD16           DB 0x50,0x00,0x00,0x02,0x00,0xFF                ;SET_BLOCKEN | 
          
| 248 | 249 | ||
| 249 | RD_SECT         PUSH BC | 
            250 | RD_SECT         PUSH BC | 
          
| 250 |                 LD A,IYL | 
            251 |                 LD A,IYL | 
          
| 251 |                 BIT 1,A | 
            252 |                 BIT 1,A | 
          
| 252 |                 JR NZ,RD_SECT3                  ;ЕСЛИ ДЛЯ ВНЕШНЕЙ | 
            253 |                 JR NZ,RD_SECT3                  ;ЕСЛИ ДЛЯ ВНЕШНЕЙ | 
          
| 253 |                 AND A | 
            254 |                 AND A | 
          
| 254 |                 JR NZ,RD_SECT2 | 
            255 |                 JR NZ,RD_SECT2 | 
          
| 255 | RD_SECT3        | 
            256 | RD_SECT3        | 
          
| 256 | ;               LD A,(R_7FFD) | 
            - | |
| 257 |                 READ_7FFD | 
            257 |         READ_7FFD | 
          
| 258 |                 LD BC,(B0_CPU2) | 
            258 |                 LD BC,(B0_CPU2) | 
          
| 259 |                 JR Z,RD_SECT1 | 
            259 |                 JR Z,RD_SECT1 | 
          
| 260 |                 LD BC,(B1_CPU2) | 
            260 |                 LD BC,(B1_CPU2) | 
          
| - | 261 | RD_SECT1 | 
          |
| 261 | RD_SECT1        PEC_ON M_SHADOW_BF | 
            262 |         PEC_ON M_SHADOW_BF | 
          
| 262 |                 LD A,B | 
            263 |                 LD A,B | 
          
| 263 |                 OR 0X37 | 
            264 |                 OR 0x37 | 
          
| 264 |                 LD B,A | 
            265 |                 LD B,A | 
          
| 265 |                 LD A,C | 
            266 |                 LD A,C | 
          
| 266 |                 LD C,LOW (WIN_A0) | 
            267 |                 LD C,LOW (WIN_A0) | 
          
| 267 |                 OUT (C),A | 
            268 |                 OUT (C),A | 
          
| 268 |                 PEC_OFF M_SHADOW_BF | 
            269 |         PEC_OFF M_SHADOW_BF | 
          
| Line 273... | Line 274... | ||
| 273 |                 NOP | 
            274 |                 NOP | 
          
| 274 |                 IN A,(C) | 
            275 |                 IN A,(C) | 
          
| 275 |                 NOP | 
            276 |                 NOP | 
          
| 276 |                 IN A,(C) | 
            277 |                 IN A,(C) | 
          
| 277 |                 PEC_ON M_SHADOW_BF | 
            278 |         PEC_ON M_SHADOW_BF | 
          
| 278 |                 LD BC,WIN_P6 | 
            279 |                 LD BC,WIN_P2 | 
          
| 279 |                 XOR A | 
            280 |                 XOR A | 
          
| 280 |                 OUT (C),A | 
            281 |                 OUT (C),A | 
          
| 281 |                 PEC_OFF M_SHADOW_BF | 
            282 |         PEC_OFF M_SHADOW_BF | 
          
| 282 |                 POP BC | 
            283 |                 POP BC | 
          
| 283 |                 RET | 
            284 |                 RET | 
          
| Line 286... | Line 287... | ||
| 286 |                 LD BC,P_DATA | 
            287 |                 LD BC,P_DATA | 
          
| 287 |                 OUT (C),A | 
            288 |                 OUT (C),A | 
          
| 288 |                 OTIR | 
            289 |                 OTIR | 
          
| 289 |                 NOP | 
            290 |                 NOP | 
          
| 290 |                 OTIR | 
            291 |                 OTIR | 
          
| 291 |                 LD A,0XFF | 
            292 |                 LD A,0xFF | 
          
| 292 |                 OUT (C),A | 
            293 |                 OUT (C),A | 
          
| 293 |                 NOP | 
            294 |                 NOP | 
          
| 294 |                 OUT (C),A | 
            295 |                 OUT (C),A | 
          
| 295 |                 POP BC | 
            296 |                 POP BC | 
          
| 296 |                 RET | 
            297 |                 RET | 
          
| Line 299... | Line 300... | ||
| 299 | LD A,CMD_18  | 
            300 | LD A,CMD_18  | 
          
| 300 |                 CALL SECM200 | 
            301 |                 CALL SECM200 | 
          
| 301 | EX AF,AF'  | 
            302 | EX AF,AF'  | 
          
| 302 | RDMULT1         EX AF,AF' | 
            303 | RDMULT1         EX AF,AF' | 
          
| 303 |                 CALL IN_OOUT | 
            304 |                 CALL IN_OOUT | 
          
| 304 | CP 0XFE  | 
            305 | CP 0xFE  | 
          
| 305 | JR NZ,$-5  | 
            306 | JR NZ,$-5  | 
          
| 306 |                 CALL RD_SECT | 
            307 |                 CALL RD_SECT | 
          
| 307 | EX AF,AF'  | 
            308 | EX AF,AF'  | 
          
| 308 |                 DEC A | 
            309 |                 DEC A | 
          
| 309 |                 JR NZ,RDMULT1 | 
            310 |                 JR NZ,RDMULT1 | 
          
| Line 320... | Line 321... | ||
| 320 |                 CALL IN_OOUT | 
            321 |                 CALL IN_OOUT | 
          
| 321 | INC A  | 
            322 | INC A  | 
          
| 322 | JR NZ,$-4  | 
            323 | JR NZ,$-4  | 
          
| 323 | EX AF,AF'  | 
            324 | EX AF,AF'  | 
          
| 324 | WRMULT1         EX AF,AF' | 
            325 | WRMULT1         EX AF,AF' | 
          
| 325 | LD A,0XFC  | 
            326 | LD A,0xFC  | 
          
| 326 |                 CALL WR_SECT | 
            327 |                 CALL WR_SECT | 
          
| 327 |                 CALL IN_OOUT | 
            328 |                 CALL IN_OOUT | 
          
| 328 | INC A  | 
            329 | INC A  | 
          
| 329 | JR NZ,$-4  | 
            330 | JR NZ,$-4  | 
          
| 330 | EX AF,AF'  | 
            331 | EX AF,AF'  | 
          
| 331 |                 DEC A | 
            332 |                 DEC A | 
          
| 332 |                 JR NZ,WRMULT1 | 
            333 |                 JR NZ,WRMULT1 | 
          
| 333 |                 LD C,P_DATA | 
            334 |                 LD C,P_DATA | 
          
| 334 |                 LD A,0XFD | 
            335 |                 LD A,0xFD | 
          
| 335 |                 OUT (C),A | 
            336 |                 OUT (C),A | 
          
| 336 |                 CALL IN_OOUT | 
            337 |                 CALL IN_OOUT | 
          
| 337 |                 INC A | 
            338 |                 INC A | 
          
| 338 |                 JR NZ,$-4 | 
            339 |                 JR NZ,$-4 | 
          
| 339 |                 JP CS_HIGH | 
            340 |                 JP CS_HIGH |