;ramdisk=1
sureLE=0
pakto=#C000 ;ьюцэю єЁхчрЄ№ (яюЄюь єїюфшЄ т >0, ўЄю шэЄхЁяЁхЄшЁєхЄё ъръ pak9+)
CATBUF=#8000
CURBUF=#8900
CATGFX=#8A00
TCRC=#5000
svbfsz=#200
sets=17
pgTEXT=#10
pgLZ=#11
;ъюф√ ╒рЇЇьрэр<<:+#200/#400 (H/L)
ldbit=#4000 ;ъЁрЄэю 512!
DISPLAY /T,ldbit,"..",ldbit+#5FF
bitlens=ldbit+#600;ёъюы№ъю ышёЄ№хт т Ёєёх
DISPLAY /T,bitlens,"..",bitlens+#FF
bdbit=bitlens+#100
DISPLAY /T,bdbit,"..",bdbit+#2FF
huff=bdbit
;єчы√ (frq,adrA(L))
;adrB=adrA+4 (хёыш ¤Єю эх ышЄхЁры)
;H,L!
;max=595
;+х∙х 1 фю яхЁхэюёр
;+х∙х 1 фы яЁшчэрър ъюэЎр ═┼╟└═▀╥█╒ (-1)
huffend=597*4+huff
lens=-95*4+huffend-298-48-28
DISPLAY /T,lens
;юЄёюЁЄшЁютрэ√ яю тючЁрёЄрэш■ frq
frqs=huffend ;фхъЁхьхэЄшЁютрээ√х
;DISPLAY /T,frqs,">=#5000"
frqend=298*2+frqs
frq2end=298*4+1+frqs
DISPLAY /T,frq2end
;ъюф√ ╒рЇЇьрэр<<:+#100/#200 (H/L)
ddbit=(frq2end+255)/256*256
ddfrq=ddbit
ddfrqend=ddbit+#300 ;ёъюы№ъю Єюўэю??? TODO
DISPLAY /T,ddbit,"..",ddfrqend-1
LZCPtab=#5800;ddbit+256
rdbit=ddbit+48 ;ышЄхЁры√ 48..75
rdfrq=ddfrq+96 ;!
OUTNAM
db "mynewrar.rar",0 ;TODO ёухэхЁшЁютрЄ№ шч ARCNAME
ARCNAME;=#5CDD
db "mynewrarrar"
;filez=fout-512
filez=#5D3B
;4 с/Їрщы: paksz,unpsz
;from=-MAX..XXXX
ENTRCOP=23698 ;16 bytes
;ъы■ўш: 11bit
keys=#4000 ;фхышЄё эр 512!
keymask=7
;яхЁхїюф√ яю ъы■ўрь: pg3,4,6,7
;todo:read arc AFTER lz&huf constr
;todo:Їрщы ЁхчрЄ№ яю яхЁхяюыэхэш■ lz buf
;todo:уЁєчшЄ№ 2■ ўрёЄ№ Їрщыр тю тхё№ сєЇхЁ
begin=#60D6+16 ;16=чрярё эр ыхт√х фюё√
;em3d13=1
;h18=1;уы■ўшЄ т√уЁєчър яю 2 ёхъЄ.эр фЁ.фшёъ(496 т GO ыхўшЄ?)
dolds=0;1 ;ъюф√ яютЄюЁр ёьх∙хэшщ (эхт√уюфэ√х)
nastr=1 ;+174
;v1="3
;v2="3
;cache=1
adir=30 ;ьюцэю ттхёЄш эрчтрэшх фшЁхъЄюЁшш (схч \), хёыш эрцрЄ№ A/C ё Caps Shift
k256=0;#56 ;1 pg keys winpgs=52..55
k3b=1 ;3bytes keys
filter=1
fast0s=8 ;-0.1%
fastCPIQ=1;0 ;+18
fastTREE=1;1 ;+9
fastWRI=1
skipnotree=1
;flash=1
;panel=1
zac=0 ;чрўхЁъ
;qc=1 ;+19
ay=1
opt2s=0;1&ramdisk
;RELDRV
; LD (DRVLET),A
RELOAD
LD SP,STACK
CALL OUTpgTEXT
;A=16
IF ay
LD HL,AYREGE
LD D,14
AY0 LD BC,-3
DEC D
DEC HL
OUT (C),D
LD B,#BF
LD A,(HL)
OUT (C),A
jr NZ,AY0
ELSE
OUT (-2),A
ENDIF
;EI
;HALT
;CALL 8020
;JNC $-4
LD DE,0
LD (selAsz),DE
;LD HL,CATBUF
;LD BC,#905
;CALL DOS
XOR A
LD (WYBRA),A
IF adir
LD HL,fdir
LD (Lfname),HL
ENDIF
; LD HL,(CURENTR)
; LD DE,ENTRCOP
; LD B,16
;CP0 LD A,(DE)
; CP (HL)
; INC HL
; inc DE
; jr NZ,$+4
; DJNZ CP0
LD HL,CATGFX
;jr Z,NOINCAT
LD DE,CATBUF
LD (CURENTR),DE
XOR A
LD (CURCATY),A
LD (CATTOP),HL
;NOINCAT
PUSH HL
;LD DE,CATGFX+1
ld d,h
ld e,l
inc de
LD B,+(128*#50+1)/256 ;0.28
LD (HL),L
LDIR
;CALL CLSA0
LD HL,CATBUF
POP DE
;LD C,0
PRCAT0 LD A,(HL)
OR A
jr Z,PRCATQ
PUSH BC
LD B,8
PRCAT1 ;LD A,(HL)
;INC HL
CALL PRGFXHL
INC DE
DJNZ PRCAT1
INC E
;LD A,(HL)
CALL PRGFXHL
DEC E
DEC HL
LD A,(HL)
INC HL
INC HL
inc HL
LD C,(HL)
INC HL
LD B,(HL)
INC HL
CP "B"
jr Z,PRCHOB
DEC BC
INC B
LD A,(HL)
PRCHOB CP B
LD A,"$"
CALL NZ,PRGFX
INC HL
inc HL
inc HL
POP BC
LD A,E
ADD A,#50-8
LD E,A
jr NC,$+3
INC D
INC C
JR PRCAT0
SELHEX
LD DE,PRNUM
LD A,(DE)
XOR 62^24
LD (DE),A
;JP REFRESH
PRCATQ
REFRESH
;CALL PANEL
LD DE,#4016;7
LD BC,(CATBUF+#8E5) ;free
CALL PRNUM
LD E,#10
LD HL,TMENU
CALL PRTEXT
LD DE,#4001
DRVLET=$+1
LD A,0
ADD A,"A"
CALL PRTHI
LD A,":"
CALL PRTHI
LD B,11
LD HL,CATBUF+#8F5
DISNM0 LD A,(HL)
INC HL
ADD A,A
jr Z,DISNMQ
PUSH AF
;SRL A
RRA
CALL PRTHI
POP AF
jr C,DISNMQ
DJNZ DISNM0
DISNMQ
IF nastr
CALL PRSET
ENDIF
LD HL,CPn
LD (HL),"n"
LD HL,ADDloop
LD (ADDjpnz),HL
OLDENTR
CURENTR=$+1
LD HL,CATBUF
CURCATY=$+1
LD B,0 ;Y
;HL=cur dir entry adr
PRHEAD
CALL PRHEADP
SELFIL0
LD (CURENTR),HL
LD A,B
LD (CURCATY),A
LD C,#78
CALL PRCUR
PUSH BC,HL
LD DE,#5010
CALL PRFN
LD E,#30
DEC L,L
LD C,(HL)
INC L
LD B,(HL)
PUSH HL
CALL PRNUM
POP HL
LD A,","
CALL PRTHI
INC L
LD C,(HL)
INC L
LD B,(HL)
PUSH HL
CALL PRNUM
POP HL
LD E,#56
INC L
LD L,(HL)
ld H,0
LD (selfsz),HL
CALL PRNUM3
selAsz=$+1
LD HL,0
LD E,#D6
CALL PRNUM4
POP HL
PUSH HL
;HALT
LD DE,ENTRCOP
LD BC,16
LDIR
CATTOP=$+1
LD HL,0
CALL VIEGFX
POP HL,BC
CALL IYKEY
LD C,7
CALL PRCUR
CP 32
jr NZ,SELNSPC
PUSH HL
SELSPC
IF zac
LD C,40
ELSE
LD C,0
ENDIF
CALL CAT2GFX
IF zac
LD E,L
ld D,5
LD A,(DE)
RRA
LD DE,10
jr C,$+5
LD DE,-10
RRA
jr C,$+3
SBC HL,DE
AND 3
ADD A,3
LD LX,A
LD HX,LX
LD C,10
ELSE
LD C,80
ENDIF
WYBINV0 LD A,(HL)
CPL
LD (HL),A
INC HL
IF zac
DEC HX
jr NZ,WYBINVN
LD HX,LX
ADD HL,DE
ENDIF
WYBINVN DEC C
jr NZ,WYBINV0
POP DE
PUSH DE
CALL WYBPP
jr Z,WYBY
;Єръющ Їрщы эх яюьхўрыш
WYB0Q LD HL,WYBRA
LD A,(HL)
INC (HL)
ADD A,A
ADD A,0xff&((filez+1)/2)
LD L,A
ADC A,+(filez+1)/512
SUB L
LD H,A
ADD HL,HL
LD (HL),D
DEC HL
LD (HL),E
JR WYBYOK
SELNSPC
CP 13
jr NZ,SELNENT
PUSH HL
LD C,8
CALL CAT2GFX
EX DE,HL
LD A,"$"
CALL PRGFX
POP DE
PUSH DE
CALL WYBPP
EX DE,HL
jr NZ,SELSPC
JR WYBYOKN
;ёэ Є№ яюьхЄъє
WYBY EX DE,HL
LD HL,WYBRA
DEC (HL)
LD H,D
ld L,E
DEC DE
INC HL,HL,HL
WYBY0
DUP 4
LDI
INC BC
EDUP
DEC C
jr NZ,WYBY0
WYBYOK
selfsz=$+1
LD DE,0
LD HL,(selAsz)
jr NZ,$+6
SBC HL,DE
JR $+3
ADD HL,DE
LD (selAsz),HL
WYBYOKN
CALL PRHEADP
POP HL
SELDOWN LD DE,16
ADD HL,DE
;A<>0
XOR A
OR (HL)
JP Z,OLDENTR
INC B
LD A,B
CP 22 ;HGT
jr NZ,STLFIL0
DEC B
LD E,#50
JR SELFUDM
SELNENT
SUB 11
jr NZ,SELFnU
LD DE,-16
ADD HL,DE
LD A,H
CP CATBUF/256
JP C,OLDENTR
DEC B
JP P,SDLFIL0
INC B
LD DE,-#50
JR SELFUDM
SELFILN SBC HL,DE
STLFIL0 JR SDLFIL0
SELFnU
INC A
jr Z,SELDOWN
INC A
jr NZ,SELFnR
LD A,22*2-1
SUB B
LD C,A
XOR A
LD DE,16
SELFR0 ADD HL,DE
CP (HL)
jr Z,SELFgE
DEC C
jr NZ,SELFR0
LD D,A
LD A,22-1
SUB B
LD E,A
INC A
CALL SELpppp
LD DE,22*#50
SELFUDM PUSH HL
LD HL,(CATTOP) ;рфЁхё уЁрЇшъш эрўрыр тшфшьющ ўрёЄш ърЄрыюур
ADD HL,DE
LD (CATTOP),HL
POP HL
JR SDLFIL0
SELFgE LD HL,(CURENTR)
SELFgE0 LD DE,16
ADD HL,DE
LD A,(HL)
SBC HL,DE
OR A
jr Z,SDLFIL0
ADD HL,DE
INC B
LD A,B
CP 22
jr NZ,SELFgE0
DEC B
LD E,#50
PUSH HL
LD HL,(CATTOP)
ADD HL,DE
LD (CATTOP),HL
POP HL
JR SELFgE0
SELFnR
INC A
jr NZ,SELFnL
LD DE,-22*16
ADD HL,DE
PUSH HL
LD E,B
ld D,A
SELpppp
EX DE,HL
add hl,hl
add hl,hl
add hl,hl
add hl,hl
EX DE,HL
SBC HL,DE
OR A
RET NZ
LD A,H
CP CATBUF/256
POP HL
LD DE,-22*#50
jr NC,SELFUDM
LD HL,CATGFX
LD (CATTOP),HL
LD HL,CATBUF
LD B,L;0
SDLFIL0 JP SELFIL0
SELFnL
INC A
JP Z,SELHEX
SUB -7
OR 32
CP "p"
JP Z,SELFILT
CP "c"
JP Z,SELCREA
CP "n"
JP Z,SELCREA
CP "a"
JP Z,SELADD
CP "s"
JP Z,SELSEP
CP "k"
jr NZ,SELFINk
LD DE,dicszM
LD A,(DE)
ADD A,A
;0=>0, -1=>-2, -#80=>0
jr NZ,SELkA2
jr C,SELkA2
LD A,-4
SELkA2 LD (DE),A
NEG
RRCA
RRCA
LD C,47
INC C
SUB 10
jr NC,$-3
ADD A,10+"0"
LD DE,tKB+1
LD (DE),A
DEC DE
LD A,C
LD (DE),A
JP REFRESH
SELFINk
CP "q"
jr NZ,SELNQUI
QUIT
SELNQUI
CP "m"
jr Z,SELMET
CP "r"
jr Z,SELRAR
IF dolds
CP "+"
jr Z,SELdolds
ENDIF
IF nastr
CP "f"
jr Z,SELFINE
ENDIF
CP "h"
jr Z,SELHEA
;LD E,"A"
;CP "!"
;jr Z,SELDEST
;INC E
;CP "@"|32
;jr Z,SELDEST
;INC E
;SUB "#"
;jr Z,SELDEST
;INC E
;DEC A
;jr Z,SELDEST
;SUB "1"-"$"
;CP 4
;JP C,RELDRV
JP SELFIL0
;SELDEST LD A,E
; LD (TDEST),A
; JP PRHEAD
SELMET
LD DE,tmethod
PUSH HL
Ptmets=$+1
LD HL,tmets
BIT 7,(HL)
jr Z,$+5
LD HL,tmets
LD C,H
LDI
LDI
LD DE,LEflag
LDI
LD DE,FMETH
LDI
LD (Ptmets),HL
POP HL
JP REFRESH
SELRAR
LD DE,extext
LD A,(DE)
XOR "z"^"a"
LD (DE),A
INC DE
LD A,(DE)
XOR "x"^"r"
LD (DE),A
JP REFRESH
IF dolds
SELdolds
LD DE,doldson
LD A,(DE)
XOR " "^"+"
LD (DE),A
JP REFRESH
ENDIF
SELHEA
LD DE,THEADON
LD A,(DE)
XOR "n"^"f"
LD (DE),A
INC DE
LD A,(DE)
XOR " "^"f"
LD (DE),A
JP PRHEAD
IF nastr
SELFINE
SELFINY=$+1
LD E,0 ;Y
SELFIN0
LD A,E
LD (SELFINY),A
ADD A,A
add A,A
add A,A
ADD A,36
LD C,#1C*8
CALL 8880
LD (HL),#3C;H
CALL IYKEY
LD D,0
LD (HL),D
LD HL,SETS
ADD HL,DE
add HL,DE
;CP 13
;JP Z,OLDENTR
LD BC,SELFIN0
PUSH BC
LD C,(HL)
INC HL
LD B,(HL)
SUB 8
jr NZ,FINnL
LD A,(BC)
CP #80
RET Z
PUSH BC
LD HL,TSETMAY
CPIR
FINLQ POP BC
LD A,(HL)
LD (BC),A
PRSET
PUSH DE
LD HL,#589C
LD DE,29
LD BC,sets*256+#17
PRSET0 LD (HL),C
INC L
LD (HL),C
INC L
LD (HL),C
INC L
LD (HL),C
ADD HL,DE
DJNZ PRSET0
LD DE,#409C
LD HL,SETS
;LD C,sets
PRSET1
CALL PRTHI32
;PUSH BC
LD C,(HL)
INC HL
LD B,(HL)
LD A,(BC)
;POP BC
CALL PRHEX
CALL PRTHI32
DEC E,E,E,E
CALL NXTLIN
INC L
;DEC C
jr NZ,PRSET1
POP DE
RET
FINnL DEC A
jr NZ,FINnR
LD A,(BC)
CP #FF
RET Z
PUSH BC
LD HL,TSETMAY
CPIR
DEC HL,HL
JR FINLQ
FINnR DEC A
jr NZ,FINnD
LD A,sets-1
CP E
RET Z
INC E
RET
FINnD DEC A
JP NZ,RELOAD
CP E
RET Z
DEC E
RET
ENDIF
WYBPP
WYBRA=$+1
LD C,0
LD A,C
;OR A
;JZ WYB0Q
SUB 1
RET C
LD HL,filez
WYB0 LD A,(HL)
INC HL
CP E
jr NZ,WYBN
LD A,(HL)
CP D
;JZ WYBY
RET Z
WYBN INC HL,HL,HL
DEC C
jr NZ,WYB0
INC C
RET
;separate files pack
SELSEP
CALL SOZDWYB
LD HL,SEPloop
LD (ADDjpnz),HL
SEPloop
LD HL,4
LD (filezsz),HL ;ўЄюс эх фхырЄ№ packlist
CALL OUTpgTEXT ;тяыюЄ№ фю DOS т LZ
IF ay==0
OUT (-2),A
ENDIF
PUSH AF
;CALL GETfCUR ;hl=archive name
SET 7,H ;skip hob.flag
JR SEPlopU
;create rar
SELCREA
;a='n' (new)/'c' (create)
PUSH AF
;PUSH HL
;CALL SOZDWYB ;хёыш Їрщы√ эх т√сЁрэ√, Єю т√сЁрЄ№ Єхъє∙шщ (hl)
ld hl,WYBRA
ld (hl),1
;POP HL
SEPlopU ;LD DE,ARCNAME
;LD BC,8
;LDIR
ld hl,ARCNAME+8;EX DE,HL
LD A,(THEADON)
CP "n"
LD (HL)," "
jr NZ,$+4 ;no rar header
LD (HL),"r"
;CALL CON1NAM ;тъы■ўрхЄ tosave, шёяЁрты хЄ шь
;TODO ёъюяшЁютрЄ№ шь шч (curfilenameaddr) т fdir
;jr $
ld hl,(curfilenameaddr)
ld de,fdir
call strcopy
call setfilenamelen
POP AF
PUSH AF
;CP pgTEXT ;separate(яюёых OUTpgTEXT)
PUSH BC,DE,HL
;LD C,#12 ;del
PUSH AF
;CALL NZ,DOD
CALL PKST ;єёЄрэютшЄ№ hl', de'
LD HL,(extext);"zx"
POP AF
;jr Z,CRyOF ;separate
LD A,(THEADON)
CP "n"
jr Z,CRnOFF1
;no rar header
LD A,(WYBRA)
DEC A
jr NZ,$+5 ;TODO чрўхь???
CRyOF LD HL,(unpsz)
CRnOFF1
LD (ARCNAME+9),HL
;LD A,46
;LD (rrrE),A ;ini ext
;CALL READs8
;LD HL,(s8+#E1);1st free
;LD (SAVE1st),HL
;TODO ARCNAME->OUTNAM
call SAVECREATE ;OUTNAM=name 8.3
;a=1: file exists, add to end
dec a
jr z,CREAfil ;don't add rar header
LD A,(THEADON)
CP "n"
jr NZ,CREAfil ;no rar header
LD IX,RARHEAD
LD B,7
CALL BLOCK
LD IX,arhd
LD B,13-2
;B=len-2(CRC)
CALL UPCRC1
LD IX,arhd-2
LD (arhd-2),DE
LD B,13
CALL BLOCK
CREAfil
POP HL,DE,BC
POP AF
CP "n";New
JP NZ,ADDend;Create
CALL SAVE_ ;flush outfile
call SAVECLOSE
JR RELOAZ
SELFILT
CALL CLA ;ёсЁрё√тхЄ lded
;XOR A
;CALL CONVNAM ;яюўхьє т√ъы■ўрхЄё tosave??? TODO
;hl=(ADRfrom)
CALL PKST ;єёЄрэютшЄ№ hl', de'
;header off
PUSH HL
LD HL,CPn
LD (HL),H ;<>#6E ;no CRC??? TODO яюўхьє???
POP HL
CALL PACKfil
CALL QUIT_ ;яхўрЄ№ ёЄрЄшёЄшъш
;CALL 8026
;JC $-3
RELOAZ
;jr $
ret ;JP RELOAD
SELADD
CALL SOZDWYB
ADDloop
;CALL READs8
;LD HL,(s8+#E4) ;ўшёыю Їрщыют эр фшёъх
; XOR A
; CP L
;jr Z,RELOAZ ;no archive
;DEC L
;LD H,A
;ld D,H
;ADD HL,HL,HL,HL,HL,HL,HL,HL
;LD E,H
;ld H,dirsec/256
;PUSH HL
;LD L,D
;LD BC,#105
;CALL DOD ;TODO
;POP HL ;hl=фхёъЁшяЄюЁ яюёыхфэхую рЁїштр эр фшёъх
;LD A,(HL)
;DEC A
;jr Z,RELOAZ ;no archive
;LD DE,ARCNAME
;LD BC,11
;LDIR
;DEC L
ld hl,ARCNAME+8+2
LD A,"r"
CP (HL)
jr NZ,RELnrar ;rzx
DEC L
LD A,"a"
CP (HL)
jr Z,RELyrar
INC L
RELnrar
LD A,(extext+1)
CP (HL)
jr NZ,RELOAZ ;not RZX
DEC L
LD A,(extext)
CP (HL)
jr NZ,RELOAZ ;not RZX
RELyrar DEC L
;LD A,(HL)
;DEC A
;CP "r"-1
;jr NZ,$+4
;LD A,46
;LD (rrrE),A ;ini ext
;єчэрхь фышэє
INC L,L,L
LD C,(HL)
INC L
LD B,(HL)
INC L
LD E,(HL) ;sectors
;LD (SAV_a),HL
PUSH DE
PUSH BC
;рЁїшт эрфю єфрышЄ№
;LD A,24
;LD (SAV_jr),A
CALL CON1NAM
;PUSH BC,DE,HL
;уЁєчшь яюёыхфэшщ ёхъЄюЁ рЁїштр
;LD HL,(s8+#E1) ;1st free
;DEC L
;JP P,$+6
;LD L,15
;DEC H
;LD (SAVE1st),HL
;EX DE,HL
;LD HL,fout
; LD BC,#105
;CALL DOD
;POP HL,DE,BC
EXX
POP BC
DEC BC
LD L,C
LD H,fout/256
INC HL
;HL=fout+1..256
POP DE
DEC E
EXX
ADDend
;jr $
ld a,(savefilehandle)
ld b,a
OS_TELLHANDLE
;out: dehl=offset
ld (recordstart),hl
ld (recordstartHSW),de
ld de,(curfilenameaddr)
call openstream_file
CALL PACKfil
call SAVE_ ;flush outfile
push hl
recordstart=$+1
ld hl,0
recordstartHSW=$+1
ld de,0
;dehl=offset
call SAVEREWIND
pop hl
CALL BYTsPPPfout ;ёюїЁрэшЄ№ эрўрыю fout т эрўрыю Їрщыр (TODO шыш сыюър???)
call SAVECLOSE
call closestream_file
ld hl,(curfilenameaddr)
call prtext
ld hl,tadded
call prtext
CALL QUIT_
if 1==0
;ЄрсышЎр єяръютрээ√ї Їрщыют фы т√уЁєчъш юЄфхы№эю?
fileCUR=$+1
LD HL,0;(fileCUR)
LD DE,(paksz)
LD (HL),E
INC HL
LD (HL),D
INC HL
LD DE,(unpsz)
LD (HL),E
INC HL
LD (HL),D
INC HL
LD (fileCUR),HL
endif
LD HL,WYBRA
DEC (HL)
ADDjpnz=$+1
JP NZ,ADDloop
LD A,(THEADON)
CP "n"
jr Z,RELOAT
filezsz=$+1
LD DE,0
LD A,E
SUB 4;яръютрыш 1 Їрщы=хую ярЁрьхЄЁ√ т фхёъЁшяЄюЁх "рЁїштр"
OR D
jr Z,RELOAT
PUSH DE
;LD HL,TPLIST
;LD C,#13
;CALL DOD
;LD C,#12;del
;CALL DOD
LD HL,filez;юЄё■фр ёртшЄ№ эх їюўЄ
LD D,keys/256
PUSH DE
LD B,2
LDIR ;??? TODO
POP HL
;filezsz=$+1
;LD DE,0
POP DE
;LD C,#B;saveC
;CALL DOD
;TODO save file hl=addr, de=size
RELOAT JP RELOAZ;RELOAD
;3
CON1NAM
;CALL GETfCUR
ld hl,ARCNAME
LD A,1
CONVNAM
;out: hl=(ADRfrom)
LD (tosave),A
;CALL OUTpgTEXT
LD BC,11
ADD HL,BC
;BIT 7,H
;SET 7,H
LD C,(HL)
INC HL
LD B,(HL) ;file length TODO
INC HL
LD A,(HL) ;<>0
;jr NZ,HOBNJR ;TODO єсЁрЄ№ їюсхЄ√
; LD B,(HL)
; ld C,17
; PUSH HL
; PUSH HL
; LD HL,CNVNMHQ
; EX (SP),HL
; XOR A
;HOBNJR
;ld bc,0x100
;LD (unpsz),BC
PUSH BC,HL
LD E,A ;??? TODO
RES 2,L
DEC L
PUSH HL
LD BC,8
FNLEN0 DEC HL
LD A,(HL)
CP 32
jr NZ,FNLENN
DEC C
jr NZ,FNLEN0
INC C ;яЁюЄшт яєёЄюую шьхэш
INC L
FNLENN
IF filter==0
PUSH BC
LD A,".
CPDR
POP BC
ENDIF
POP HL
IF filter==0
JZ $+4 ;яЁюЄшт 12.34< >
ENDIF
INC E
DEC E
PUSH HL
PUSH DE
Lfname=$+1
LD DE,fdir
LD A,(HL)
RES 3,L
IF filter
PUSH AF
filt0 LD A,(HL)
LD (HL),"_"
CP 33
jr C,filtGOO
CP "."
jr Z,filtGOO
LD (HL),A
CP "+"
jr Z,filtBAD
CP 34
jr Z,filtBAD
CP "*"
jr Z,filtBAD
CP "/"
jr Z,filtBAD
CP 0x5c;"\"
jr Z,filtBAD
CP ":"
jr C,filtGOO
CP "@"
jr NC,filtGOO
filtBAD LD (HL),"-"
filtGOO LDI
JP PE,filt0
POP AF
ELSE
LDIR
ENDIF
EX DE,HL
POP BC
POP DE
jr Z,FNLyEXT
CP " "
jr Z,FNLnEXT
FNLyEXT LD (HL),"."
INC HL
INC C
DEC C
jr NZ,$+5
LD (HL),"$"
INC HL
LD (HL),A
INC HL
PUSH HL
EX DE,HL
INC HL
;CALL goodH3
LD B,(HL)
INC HL
LD C,(HL)
INC HL
POP HL
LD A," "
CP B
jr Z,$+4
LD (HL),B
INC HL
CP C
jr Z,$+4
LD (HL),C
INC HL
FNLnEXT
call setfilenamelen
POP HL,BC
INC L
LD E,(HL)
INC L
LD D,(HL)
CNVNMUSE
if 1==0
;фюуЁєчшЄ№ 32╩
ld bc,0x100;0x8000 ;ъюёЄ√ы№ file size TODO
DEC BC
LD A,B
INC B
CP MAX/256
INC A
jr C,CNVNMUSEnokus
LD BC,packfilsz;#8000 ;ъєёърьш яю #8000
;LD (kus),BC
CNVNMUSEnokus
SUB B
LD (FILEremain),A ;трцэю 0/эх0
XOR A
LD L,A
SUB B
LD H,A
;LD (ADRfrom),HL
;LD C,5 ;TODO єсЁрЄ№
endif
RET
if 1==0
;фс ьхёЄю яюф 17b чруюыютюъ ё рфЁ Їрщыр
CNVNMHQ
EX DE,HL
EX (SP),HL
DEC B ;v11
PUSH BC
LD C,17
LD (kus),BC
LD BC,13
OR A
SBC HL,BC
LDIR
LD A,(HL) ;ърЄрыюу Єрь цх!
EX DE,HL
LD (HL),B
INC HL
LD (HL),A
LD DE,105
LD L,D
LD B,15
HOB0 LD A,(HL)
ADD A,E
LD E,A
LD A,(HL)
ADC A,D
LD D,A
INC HL
DJNZ HOB0
LD (HL),E
INC HL
LD (HL),D
INC HL
POP BC
POP DE
RET
endif
setfilenamelen
ld hl,fdir
call strlen
;LD DE,-fdir
;ADD HL,DE
LD (namsz),HL
LD BC,32
ADD HL,BC
LD (fihdsz),HL
ret
SOZDWYB
;hl=рфЁхё Єхъє∙хую фхёъЁшяЄюЁр т CATBUF
CALL CLA
;LD DE,filez
;ld (fileCUR),DE ;ЄрсышЎр єяръютрээ√ї Їрщыют фы т√уЁєчъш юЄфхы№эю?
LD A,(WYBRA)
OR A
jr NZ,SOZDWYn ;єцх хёЄ№ т√сЁрээ√х Їрщы√
INC A
LD (WYBRA),A
LD (filez),HL ;hl=рфЁхё Єхъє∙хую фхёъЁшяЄюЁр т CATBUF
SOZDWYn
ADD A,A
LD B,A ;b=selfiles*2
ADD A,A
LD E,A
LD A,0
ADC A,A
LD D,A ;de=selfiles*4
LD (filezsz),DE
IF adir==0
RET
ELSE
;CALL 8026
;RET C
CALL CLS
;LD (HL),#44
;LDIR
INCLX INC B
INPUT0
LD HL,fdir
PUSH BC
LD DE,#40E0
CALL PR_B
DEC HL
dec E
POP BC
DEC E
;LD A,"_"
;CALL PRTHI
CALL PRTHI32
CALL IYKEY
CP key_enter
jr Z,INPOK
cp 0x20
jr C,INPDEL ;яЁюўшх ёшёЄхьэ√х ъэюяъш эх эєцэ√
;JP M,INPUT0
CP "/"
jr NZ,$+4
LD A,0x5c;"\"
LD (HL),A
LD A,B
CP adir;+1
jr NZ,INCLX
INPDEL DJNZ INPUT0
JR INCLX
INPOK
LD (HL),0x5c;"\"
INC HL
LD (Lfname),HL
ENDIF
CLA
PUSH HL
CALL CLS
;LD B,3
;LDIR
;LD (lded),BC ;TODO ъєфр-Єю т фЁєуюх ьхёЄю
POP HL
RET
CLPG
push af
CALL OUTME
if 1==1
ld hl,0xc000
ld de,0xc001
ld bc,0x3fff
ld (hl),l;0
ldir
else ;ьюцхЄ чряюЁЄшЄ№ bfxx
LD HL,0
LD (CLPGSP),SP
LD SP,HL
LD C,2
LD B,L
CLPG0 DUP 16
PUSH HL
EDUP
DJNZ CLPG0
DEC C
JR NZ,CLPG0
CLPGSP=$+1
LD SP,0
endif
pop af
RET
IYKEY
PUSH HL
;LD HL,23560
;LD (HL),H
;LD A,(HL)
;CP H
;jr Z,$-2
push bc
push de
push ix
push iy ;TODO эрфю ыш ры№ЄхЁэрЄштэ√х?
YIELDGETKEYLOOP
pop iy
pop ix
pop de
pop bc
POP HL
RET
;2
UPCRC1
LD HL,-1
ld D,H
ld E,L
UPCRC PUSH BC
LD C,(IX)
CALL crcpp
POP BC
INC IX
DJNZ UPCRC
INVCRC CALL $+3
EX DE,HL
INVHL LD A,H
CPL
LD H,A
LD A,L
CPL
LD L,A
RET
crcpp
LD B,8
crclp LD A,E
XOR C
SRL C
srl H
RR L
rr D
rr E
RRA
jr NC,noxor
LD A,H
XOR #ED
LD H,A
LD A,L
XOR #B8
LD L,A
LD A,D
XOR #83
LD D,A
LD A,E
XOR #20
LD E,A
noxor DJNZ crclp
RET
IF ay
DW 300,400,500
DB 0
DB 7<3
DB 16,16,16
DW 6700
DB 1
AYREGE
ENDIF
tmets
DB "fa",24,"4"
DB "pu",24,"4"
DB "be",40,"5"
DB -1
IF nastr
TSETMAY=$-1
DB #FE,#FD,#FC,#FA,#F8,#F4,#F0
DB #E8,#E0,#D0,#C0,#A0,#80
ENDIF
TPLIST
DB "packlistC"
THEAD
DB "to A",13
TDEST=$-2
DB "Header on ",13
THEADON=$-3
DB "Mark ",0
TMENU
DB " free",13
tMeth
DB "Method:"
tmethod DB "best"
tKB DB "32K",13
DB 13
DB "1-4 drives",13
IF nastr
DB "Finetune"
ENDIF
DB 13
DB "Pack test",13
DB "Separate pack"
DB 13,"Create Rzx"
extext=$-2
IF dolds
doldson DB " "
ENDIF
DB 13
DB "New empty",13
DB "Add",13
DB 13
DB "Quit to DOS"
NOP
RARHEAD
DB "Rar!",#1A,7,0
DW 0 ;CRC
arhd DB #73
DW 0
DW 13
DW 0
DW 0,0
fihd DB #74
DW #8000
fihdsz DW 0
paksz DS 4
unpsz DS 4
DB 82
filcrc DS 4
DS 4 ;TIME
DB 20 ;VER
FMETH DB "5"
namsz DW 0
DS 4 ;ATTR
fdir ;DB " ";filename.$diz
db "sometext.flz"
ds fdir+256-$
;Konez=$+13+adir
;WASSETS
;DISP #5B05;(#5B5C)=#10
;GDESETS
QUIT_
XOR A
OUT (-2),A
;CALL CLS
;INC H
;inc D
;LD (HL),71
;LDIR
LD HL,(unpsz)
LD DE,#488A
CALL PRNUM2
LD HL,(Lfname)
LD E,#4B
LD A,(namsz)
SUB L
ADD A,fdir&0xff
LD B,A
CALL PR_B
LD HL,(paksz)
LD E,#AA
PRNUM2
PUSH HL
CALL PRNUMD
LD A,"="
CALL PRTHI
POP BC
PRNUMH
LD A,"#"
CALL PRTHI
LD A,B
CALL PRHEX
LD A,C
PRHEX
CALL PRHEXD
PRHEXD RRCA
RRCA
RRCA
RRCA
PUSH AF
AND 15
CP 10
CCF
ADC A,"0"
DAA
CALL PRTHI
POP AF
RET
PRNUM
LD A,PRNUMH-$-2
LD H,B
ld L,C
PRNUMD LD BC,10000
CALL PRDIG
PRNUM4 LD BC,1000
CALL PRDIG
PRNUM3 LD BC,100
CALL PRDIG
LD C,10
CALL PRDIG
LD C,1
PRDIG
LD A,"0"-1
OR A
INC A
SBC HL,BC
jr NC,$-3
ADD HL,BC
PRJR jr NC,PR8X8
PRTHI
if 1==0
PUSH BC,DE,HL
CALL BEFOPR
PRTHI0 LD A,(HL)
RRCA
OR (HL)
LD (DE),A
INC L,D
DJNZ PRTHI0
POP HL,DE,BC
INC E
endif
RET
if 1==0 ;TODO
PR1234
LD DE,#5941
endif
PR88HEX
LD A,H
CALL PR12
LD A,L
PR12 PUSH AF
RRA
RRA
RRA
RRA
CALL PR8X8
POP AF
PR8X8
PUSH HL
ADD A,A
ADD A,A
ADD A,A
OR #80
LD H,61
CP 80+#80
jr C,$+5
SUB 72+#80
INC H
LD L,A
PR8X80 INC L
LD A,(HL)
ADD A,A,A,A
LD B,A
DUP 5
SBC A,A
LD (DE),A
INC E
SLA B
EDUP
SBC A,A
LD (DE),A
LD A,E
ADD A,#1B
LD E,A
jr NC,PR8X80
ADD A,#48
LD E,A
POP HL
RET
IF nastr
SETS
DW SET1
DW SET2
DW SETA
DW SETB
DW SETC
DW SETD
DW SETE
DW SETF
DW SETG
DW SETH
DW SETI
DW SETJ
DW SETK
DW SETL
DW SETM
DW SETN
DW SETO
DISPLAY $
SETSlen=$-SETS
ENDIF
;ENT
;GO
; JP RELOAD
MAX=0x8100;-Konez-#200-svbfsz/256<8
;-(MAX+pakto/8*9)/256<8,fastWR:ёюцЁ╕Є юъэю
pak9=-MAX;яЁюфюыц-х LZ фрээ√ї
fout=-MAX-#200-svbfsz
;яхЁт√х 2ёхъ.ёюїЁрэ ■Єё т яюёы.юўхЁхф№
;ўЄюс√ єёяхЄ№ шчьхэшЄ№ paklen,CRC
;s8=fout
;dirsec=fout+#200
;DISPLAY /T,Konez,/T,MAX