ZXNet эхоконференция «code.zx»


тема: Упаковать данные пеpедаваемые викоммником в одном блоке X-MODEM



от: Aleksandr Majorov
кому: Kirill Frolov
дата: 25 May 1999
Хаюшки, Kirill! Once in morning 24-05-99 09:20:28 somebody Kirill Frolov has written to All about 'Упаковать данные пеpедаваемые викоммником в одном блоке X-MODEM'. [ ] KF> Решил я сжимать пеpедаваемые данные в дpайвеpе модема для ММД. [ ] KF> Может есть быстpый способ найти стpоку для всяких LZ... методов, только KF> не следует забывать, что у меня всего 261 байт ? вот, чем могу - помогу ;-) сразу говорю - я ни за что не отвечаю - это делал не я ;-))) Вот п/п которую писал хакер Крис для драйвера, посмотри может чем поможет... =================================================== ; PACK HL - START ; BC - LEN ; Портит hl,de,bc,af,ix ; При возврате C=1 ; блок не запаковался :(( hl,bc портит. ; C=0 то запаковался ; HL - Start пакованного блока ; BC - Len ; DEPACK HL - START ; BC - LEN ; C=1 ERROR ; C=0 HL - адрес распаченного блока ; BC - длина блока DEPACK_ADR EQU #4800 PACK_ADR EQU #5000 ORG 25000 DI LD HL,MODUL LD BC,EMOD-MODUL CALL PACK NOP CALL DEPACK JR $ NOP RET MODUL DB "1234567890" DB "1234567890" DB "1234567890" DB "1234567890" DS 50 DB "Hello all!!! " DB "This is pack-modul!" EMOD PACK PUSH BC LD DE,PACK_ADR+300 ADD HL,BC DEC HL LD A,(HL): LD (DE),A DEC DE: DEC HL: DEC BC XOR A LD (DE),A: DEC DE: LD (DE),A LL40C1 PUSH HL: PUSH BC LD A,B: OR A: JR NZ,LL40CE LD A,C: CP #42: JR C,LL40D0 LL40CE LD C,#42 LL40D0 LD B,C LD A,(HL) JP LL40D9 LL40D5 CP (HL): JP NZ,LL40DC LL40D9 DEC HL DJNZ LL40D5 LL40DC LD A,C: SUB B POP BC: POP HL CP #03: JP C,LL4106 LD (LL40FD),A CP #0A: JP NC,LL40F4 CCF: CALL LL41CA JP C,LL410E LL40F4 LD A,(DE): OR A: JP Z,LL40FA DEC DE LL40FA LD A,(HL): LD (DE),A LL40FD EQU $+1 : LD A,3 PUSH HL LD L,C: LD C,A ADD A,#3D JP LL4128 LL4106 LD A,3: CALL LL41CA JP C,LL4138 LL410E PUSH HL LD A,(DE): OR A: JP Z,LL4115 DEC DE LL4115 LD HL,#12 DEC HL: DEC HL LD A,L: LD (DE),A LD A,(LL4224) LD L,C: LD C,A: ADD A,5 RRCA: RRCA: RRCA: RRCA OR H LL4128 DEC DE LD H,B: LD B,0 LD (DE),A: DEC DE SBC HL,BC EX (SP),HL: SBC HL,BC LD A,B POP BC JP LL4143 LL4138 LD A,(DE) INC A: AND #3F: JP NZ,LL4141 DEC DE: INC A LL4141 LDD LL4143 LD (DE),A LD A,B: OR C: JP NZ,LL40C1 LD A,(DE) OR A: JR Z,$+3: DEC DE LD HL,PACK_ADR+300+1 OR A: SBC HL,DE POP BC PUSH HL OR A: SBC HL,BC POP HL CCF: RET C ;HЕ ЗАПОКОВАЛОСЬ EX DE,HL PUSH HL: PUSH DE PUSH DE: POP BC MASK CALL CRC16 LD (PACK_ADR+300+1),HL POP BC: POP HL INC BC: INC BC OR A RET CRC16 PUSH HL: POP IX LD HL,0 N_END LD D,(IX): LD E,D ADD HL,DE JR NC,NCR DEC H: INC L NCR INC IX DEC BC LD A,B: OR C: JP NZ,N_END RET LL41CA LD (LL4240),A SBC A,0 PUSH HL: PUSH DE: PUSH BC LD (LL4224),A EX DE,HL LD HL,4: SBC HL,BC JP NC,LL423C LD HL,#1001: SBC HL,BC LD H,B: LD L,C JP NC,LL41EC LD BC,#1002 OR A LL41EC SBC HL,BC DEC BC: DEC BC LD (LL4201),HL LD H,D: LD L,E DEC HL: DEC HL LL41F7 LD A,(DE) CPDR JP PO,LL423C PUSH BC: PUSH DE: PUSH HL LL4201 EQU $+1: LD HL,0 ADD HL,BC EX (SP),HL: POP BC PUSH HL LD A,B: OR A: JP NZ,LL4212 LD A,C: CP 10: JP C,LL4214 LL4212 LD C,10 LL4214 LD B,C JP LL421E LL4218 LD A,(DE): CP (HL) JP NZ,LL4221 DEC HL LL421E DEC DE: DJNZ LL4218 LL4221 LD A,C: SUB B LL4224 EQU $+1: CP 2 JP C,LL4236 JP Z,LL4245 EX DE,HL SBC HL,DE LD (LL4115+1),HL LD (LL4224),A CP 10 LL4236 POP HL POP DE POP BC JP C,LL41F7 LL423C LD A,(LL4224) LL4240 EQU $+1: CP 3 POP BC: POP DE: POP HL RET LL4245 POP HL: POP DE: POP BC JP LL41F7 ;*************************************** DEPACK PUSH HL: PUSH BC DEC BC: DEC BC CALL CRC16 LD E,(IX+0): LD D,(IX+1) OR A: SBC HL,DE POP BC: POP HL RET C LD DE,DEPACK_ADR LL4268 INC HL LL4269 LD A,(HL) BIT 7,A: JR Z,LL4287 AND #0F: LD B,A RLD: SUB 5: LD C,A INC HL: PUSH HL LD A,E: SUB (HL): LD L,A LD A,D: SBC A,B: LD H,A DEC HL: DEC HL LD B,0 LL4282 LDIR POP HL JR LL4268 LL4287 INC HL OR A: JR Z,LL429F BIT 6,A: JR NZ,LL4294 LD C,A LDIR JR LL4269 LL4294 SUB #3E: LD C,A LD A,(HL) PUSH HL LD H,D: LD L,E: INC DE LD (HL),A JR LL4282 LL429F LDI LD HL,DEPACK_ADR PUSH HL EX DE,HL OR A: SBC HL,DE PUSH HL: POP BC POP HL OR A RET =================================================== А вот сорец из драйвера для EMS: =================================================== PACK PUSH BC: PUSH IX LD HL,(MOD_BUFF2) LD DE,PKADR LD IX,PKADR LD (IX+0),#80 PACK1 LD A,B: OR C: JR Z,PACK2 LD A,(IX+0): CP #7F: JR C,PACK5 PUSH DE: POP IX LD (IX+0),#FF INC DE PACK5 PUSH BC DEC BC: DEC BC: DEC BC BIT 7,B POP BC JR NZ,PACK3 LD A,(HL): INC HL CP (HL): JR NZ,PACK3-1 INC HL CP (HL): JR NZ,PACK3-2 INC HL BIT 7,(IX+0): JR NZ,PACK6 PUSH DE: POP IX INC DE PACK6 LD (DE),A LD (IX+0),#80 INC DE EX AF,AF' DEC BC: DEC BC PACK4 DEC BC: LD A,B: OR C: JR Z,PACK2 LD A,(IX+0): INC A: JR Z,PACK1 EX AF,AF' CP (HL): JR NZ,PACK1 INC HL EX AF,AF' INC (IX+0) JR PACK4 DEC HL: DEC HL PACK3 INC (IX+0) LDI JR PACK1 PACK2 EX DE,HL LD DE,PKADR OR A: SBC HL,DE POP IX: POP BC PUSH HL OR A: SBC HL,BC: JR C,PACK7 POP HL RET PACK7 POP BC RET UNPACK LD DE,PKADR LD BC,(BLOCK_LEN) LD HL,(MOD_BUFF2) UNPACK1 LD A,(DE) INC DE DEC BC BIT 7,B RET NZ BIT 7,A JR NZ,UNPACK2 INC A UNPACK4 EX AF,AF' LD A,(DE) LD (HL),A DEC BC BIT 7,B RET NZ INC HL INC DE EX AF,AF' DEC A JR NZ,UNPACK4 JR UNPACK1 UNPACK2 DEC BC BIT 7,B RET NZ PUSH BC SUB #80-3 LD B,A LD A,(DE) INC DE UNPACK3 LD (HL),A INC HL DJNZ UNPACK3 POP BC JR UNPACK1 =================================================== Hу вот и все *MAS* с кувалдой




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Виртуальный Spectrum - Тестирование эмуляторов ZX-Spectrum.
Напоследок - Пoдoшёл к кoнцy nятый выnyск самoй, чтo ни на есть, юмoристическoй rазеты FUNNY.
Юмор - Анекдоты, афоризмы, приколы.
Юмор - Единица измерения в физике !
Реклама - Реклама и объявления ...

В этот день...   8 мая