Rev 609 | Details | Compare with Previous | Last modification | View Log
Rev | Author | Line No. | Line |
---|---|---|---|
92 | DimkaM | 1 | sureLE=0 |
344 | alone | 2 | pakto=#C000 ;можно урезать (потом уходит в >0, что интерпретируется как pak9+) |
92 | DimkaM | 3 | CATBUF=#8000 |
4 | CURBUF=#8900 |
||
5 | CATGFX=#8A00 |
||
6 | TCRC=#5000 |
||
7 | svbfsz=#200 |
||
8 | sets=17 |
||
9 | pgTEXT=#10 |
||
10 | pgLZ=#11 |
||
344 | alone | 11 | ;коды Хаффмана<<:+#200/#400 (H/L) |
12 | ldbit=#4000 ;кратно 512! |
||
289 | dimkam | 13 | ;DISPLAY /T,ldbit,"..",ldbit+#5FF |
344 | alone | 14 | bitlens=ldbit+#600;сколько листьев в ярусе |
289 | dimkam | 15 | ;DISPLAY /T,bitlens,"..",bitlens+#FF |
92 | DimkaM | 16 | |
17 | bdbit=bitlens+#100 |
||
289 | dimkam | 18 | ;DISPLAY /T,bdbit,"..",bdbit+#2FF |
92 | DimkaM | 19 | |
20 | huff=bdbit |
||
344 | alone | 21 | ;узлы (frq,adrA(L)) |
22 | ;adrB=adrA+4 (если это не литерал) |
||
92 | DimkaM | 23 | ;H,L! |
24 | ;max=595 |
||
344 | alone | 25 | ;+еще 1 до переноса |
26 | ;+еще 1 для признака конца НЕЗАНЯТЫХ (-1) |
||
92 | DimkaM | 27 | huffend=597*4+huff |
28 | lens=-95*4+huffend-298-48-28 |
||
289 | dimkam | 29 | ;DISPLAY /T,lens |
92 | DimkaM | 30 | |
344 | alone | 31 | ;отсортированы по возрастанию frq |
32 | frqs=huffend ;декрементированные |
||
99 | alone | 33 | ;DISPLAY /T,frqs,">=#5000" |
92 | DimkaM | 34 | frqend=298*2+frqs |
35 | frq2end=298*4+1+frqs |
||
289 | dimkam | 36 | ;DISPLAY /T,frq2end |
92 | DimkaM | 37 | |
344 | alone | 38 | ;коды Хаффмана<<:+#100/#200 (H/L) |
99 | alone | 39 | ddbit=(frq2end+255)/256*256 |
92 | DimkaM | 40 | ddfrq=ddbit |
344 | alone | 41 | ddfrqend=ddbit+#300 ;сколько точно??? TODO |
289 | dimkam | 42 | ;DISPLAY /T,ddbit,"..",ddfrqend-1 |
92 | DimkaM | 43 | LZCPtab=#5800;ddbit+256 |
344 | alone | 44 | rdbit=ddbit+48 ;литералы 48..75 |
92 | DimkaM | 45 | rdfrq=ddfrq+96 ;! |
46 | |||
47 | OUTNAM |
||
344 | alone | 48 | db "mynewrar.rar",0 ;TODO сгенерировать из ARCNAME |
92 | DimkaM | 49 | ARCNAME;=#5CDD |
50 | db "mynewrarrar" |
||
51 | ;filez=fout-512 |
||
52 | filez=#5D3B |
||
344 | alone | 53 | ;4 б/файл: paksz,unpsz |
92 | DimkaM | 54 | |
55 | ;from=-MAX..XXXX |
||
56 | ENTRCOP=23698 ;16 bytes |
||
344 | alone | 57 | ;ключи: 11bit |
58 | keys=#4000 ;делится на 512! |
||
92 | DimkaM | 59 | keymask=7 |
344 | alone | 60 | ;переходы по ключам: pg3,4,6,7 |
104 | alone | 61 | |
92 | DimkaM | 62 | ;todo:read arc AFTER lz&huf constr |
344 | alone | 63 | ;todo:файл резать по переполнению lz buf |
64 | ;todo:грузить 2ю часть файла во весь буфер |
||
65 | begin=#60D6+16 ;16=запас на левые досы |
||
92 | DimkaM | 66 | ;em3d13=1 |
344 | alone | 67 | ;h18=1;глючит выгрузка по 2 сект.на др.диск(496 в GO лечит?) |
68 | dolds=0;1 ;коды повтора смещений (невыгодные) |
||
92 | DimkaM | 69 | nastr=1 ;+174 |
70 | ;v1="3 |
||
71 | ;v2="3 |
||
72 | ;cache=1 |
||
344 | alone | 73 | adir=30 ;можно ввести название директории (без \), если нажать A/C с Caps Shift |
92 | DimkaM | 74 | k256=0;#56 ;1 pg keys winpgs=52..55 |
75 | k3b=1 ;3bytes keys |
||
76 | filter=1 |
||
77 | fast0s=8 ;-0.1% |
||
78 | fastCPIQ=1;0 ;+18 |
||
79 | fastTREE=1;1 ;+9 |
||
80 | fastWRI=1 |
||
81 | skipnotree=1 |
||
82 | ;flash=1 |
||
83 | ;panel=1 |
||
344 | alone | 84 | zac=0 ;зачерк |
92 | DimkaM | 85 | ;qc=1 ;+19 |
86 | ay=1 |
||
87 | |||
853 | alone | 88 | opt2s=1&ramdisk |
92 | DimkaM | 89 | |
90 | ;RELDRV |
||
91 | ; LD (DRVLET),A |
||
92 | RELOAD |
||
94 | alone | 93 | LD SP,STACK |
106 | alone | 94 | CALL OUTpgTEXT |
92 | DimkaM | 95 | ;A=16 |
96 | IF ay |
||
97 | LD HL,AYREGE |
||
98 | LD D,14 |
||
99 | AY0 LD BC,-3 |
||
100 | DEC D |
||
101 | DEC HL |
||
102 | OUT (C),D |
||
103 | LD B,#BF |
||
104 | LD A,(HL) |
||
105 | OUT (C),A |
||
106 | jr NZ,AY0 |
||
107 | ELSE |
||
108 | OUT (-2),A |
||
109 | ENDIF |
||
94 | alone | 110 | ;EI |
92 | DimkaM | 111 | ;HALT |
112 | ;CALL 8020 |
||
113 | ;JNC $-4 |
||
114 | LD DE,0 |
||
115 | LD (selAsz),DE |
||
116 | ;LD HL,CATBUF |
||
117 | ;LD BC,#905 |
||
118 | ;CALL DOS |
||
119 | XOR A |
||
120 | LD (WYBRA),A |
||
121 | IF adir |
||
122 | LD HL,fdir |
||
123 | LD (Lfname),HL |
||
124 | ENDIF |
||
125 | ; LD HL,(CURENTR) |
||
126 | ; LD DE,ENTRCOP |
||
127 | ; LD B,16 |
||
128 | ;CP0 LD A,(DE) |
||
129 | ; CP (HL) |
||
104 | alone | 130 | ; INC HL |
92 | DimkaM | 131 | ; inc DE |
132 | ; jr NZ,$+4 |
||
133 | ; DJNZ CP0 |
||
134 | LD HL,CATGFX |
||
135 | ;jr Z,NOINCAT |
||
136 | LD DE,CATBUF |
||
137 | LD (CURENTR),DE |
||
138 | XOR A |
||
139 | LD (CURCATY),A |
||
140 | LD (CATTOP),HL |
||
141 | ;NOINCAT |
||
142 | PUSH HL |
||
104 | alone | 143 | ;LD DE,CATGFX+1 |
144 | ld d,h |
||
145 | ld e,l |
||
92 | DimkaM | 146 | inc de |
147 | LD B,+(128*#50+1)/256 ;0.28 |
||
148 | LD (HL),L |
||
149 | LDIR |
||
150 | ;CALL CLSA0 |
||
151 | LD HL,CATBUF |
||
152 | POP DE |
||
153 | ;LD C,0 |
||
154 | PRCAT0 LD A,(HL) |
||
155 | OR A |
||
156 | jr Z,PRCATQ |
||
157 | PUSH BC |
||
158 | LD B,8 |
||
159 | PRCAT1 ;LD A,(HL) |
||
160 | ;INC HL |
||
161 | CALL PRGFXHL |
||
162 | INC DE |
||
163 | DJNZ PRCAT1 |
||
164 | INC E |
||
165 | ;LD A,(HL) |
||
166 | CALL PRGFXHL |
||
167 | DEC E |
||
168 | DEC HL |
||
169 | LD A,(HL) |
||
170 | INC HL |
||
104 | alone | 171 | INC HL |
92 | DimkaM | 172 | inc HL |
173 | LD C,(HL) |
||
174 | INC HL |
||
175 | LD B,(HL) |
||
176 | INC HL |
||
177 | CP "B" |
||
178 | jr Z,PRCHOB |
||
179 | DEC BC |
||
180 | INC B |
||
181 | LD A,(HL) |
||
182 | PRCHOB CP B |
||
183 | LD A,"$" |
||
184 | CALL NZ,PRGFX |
||
104 | alone | 185 | INC HL |
92 | DimkaM | 186 | inc HL |
104 | alone | 187 | inc HL |
92 | DimkaM | 188 | POP BC |
189 | LD A,E |
||
190 | ADD A,#50-8 |
||
191 | LD E,A |
||
192 | jr NC,$+3 |
||
193 | INC D |
||
194 | INC C |
||
195 | JR PRCAT0 |
||
196 | SELHEX |
||
197 | LD DE,PRNUM |
||
198 | LD A,(DE) |
||
199 | XOR 62^24 |
||
200 | LD (DE),A |
||
201 | ;JP REFRESH |
||
202 | PRCATQ |
||
203 | REFRESH |
||
204 | ;CALL PANEL |
||
205 | LD DE,#4016;7 |
||
206 | LD BC,(CATBUF+#8E5) ;free |
||
207 | CALL PRNUM |
||
208 | LD E,#10 |
||
209 | LD HL,TMENU |
||
210 | CALL PRTEXT |
||
211 | LD DE,#4001 |
||
212 | DRVLET=$+1 |
||
213 | LD A,0 |
||
214 | ADD A,"A" |
||
215 | CALL PRTHI |
||
216 | LD A,":" |
||
217 | CALL PRTHI |
||
218 | LD B,11 |
||
219 | LD HL,CATBUF+#8F5 |
||
220 | DISNM0 LD A,(HL) |
||
221 | INC HL |
||
222 | ADD A,A |
||
223 | jr Z,DISNMQ |
||
224 | PUSH AF |
||
225 | ;SRL A |
||
226 | RRA |
||
227 | CALL PRTHI |
||
228 | POP AF |
||
229 | jr C,DISNMQ |
||
230 | DJNZ DISNM0 |
||
231 | DISNMQ |
||
232 | IF nastr |
||
233 | CALL PRSET |
||
234 | ENDIF |
||
235 | LD HL,CPn |
||
236 | LD (HL),"n" |
||
237 | LD HL,ADDloop |
||
238 | LD (ADDjpnz),HL |
||
239 | OLDENTR |
||
240 | CURENTR=$+1 |
||
241 | LD HL,CATBUF |
||
242 | CURCATY=$+1 |
||
243 | LD B,0 ;Y |
||
244 | ;HL=cur dir entry adr |
||
245 | PRHEAD |
||
246 | CALL PRHEADP |
||
247 | SELFIL0 |
||
248 | LD (CURENTR),HL |
||
249 | LD A,B |
||
250 | LD (CURCATY),A |
||
251 | LD C,#78 |
||
252 | CALL PRCUR |
||
253 | PUSH BC,HL |
||
254 | LD DE,#5010 |
||
255 | CALL PRFN |
||
256 | LD E,#30 |
||
257 | DEC L,L |
||
258 | LD C,(HL) |
||
259 | INC L |
||
260 | LD B,(HL) |
||
261 | PUSH HL |
||
262 | CALL PRNUM |
||
263 | POP HL |
||
264 | LD A,"," |
||
265 | CALL PRTHI |
||
266 | INC L |
||
267 | LD C,(HL) |
||
268 | INC L |
||
269 | LD B,(HL) |
||
270 | PUSH HL |
||
271 | CALL PRNUM |
||
272 | POP HL |
||
273 | LD E,#56 |
||
274 | INC L |
||
104 | alone | 275 | LD L,(HL) |
92 | DimkaM | 276 | ld H,0 |
277 | LD (selfsz),HL |
||
278 | CALL PRNUM3 |
||
279 | selAsz=$+1 |
||
280 | LD HL,0 |
||
281 | LD E,#D6 |
||
282 | CALL PRNUM4 |
||
283 | POP HL |
||
284 | PUSH HL |
||
285 | ;HALT |
||
286 | LD DE,ENTRCOP |
||
287 | LD BC,16 |
||
288 | LDIR |
||
289 | CATTOP=$+1 |
||
290 | LD HL,0 |
||
291 | CALL VIEGFX |
||
292 | POP HL,BC |
||
293 | CALL IYKEY |
||
294 | LD C,7 |
||
295 | CALL PRCUR |
||
296 | CP 32 |
||
297 | jr NZ,SELNSPC |
||
298 | PUSH HL |
||
299 | SELSPC |
||
300 | IF zac |
||
301 | LD C,40 |
||
302 | ELSE |
||
303 | LD C,0 |
||
304 | ENDIF |
||
305 | CALL CAT2GFX |
||
306 | IF zac |
||
104 | alone | 307 | LD E,L |
92 | DimkaM | 308 | ld D,5 |
309 | LD A,(DE) |
||
310 | RRA |
||
311 | LD DE,10 |
||
312 | jr C,$+5 |
||
313 | LD DE,-10 |
||
314 | RRA |
||
315 | jr C,$+3 |
||
316 | SBC HL,DE |
||
317 | AND 3 |
||
318 | ADD A,3 |
||
319 | LD LX,A |
||
320 | LD HX,LX |
||
321 | LD C,10 |
||
322 | ELSE |
||
323 | LD C,80 |
||
324 | ENDIF |
||
325 | WYBINV0 LD A,(HL) |
||
326 | CPL |
||
327 | LD (HL),A |
||
328 | INC HL |
||
329 | IF zac |
||
330 | DEC HX |
||
331 | jr NZ,WYBINVN |
||
332 | LD HX,LX |
||
333 | ADD HL,DE |
||
334 | ENDIF |
||
335 | WYBINVN DEC C |
||
336 | jr NZ,WYBINV0 |
||
337 | POP DE |
||
338 | PUSH DE |
||
339 | CALL WYBPP |
||
340 | jr Z,WYBY |
||
344 | alone | 341 | ;такой файл не помечали |
92 | DimkaM | 342 | WYB0Q LD HL,WYBRA |
343 | LD A,(HL) |
||
344 | INC (HL) |
||
345 | ADD A,A |
||
346 | ADD A,0xff&((filez+1)/2) |
||
347 | LD L,A |
||
348 | ADC A,+(filez+1)/512 |
||
349 | SUB L |
||
350 | LD H,A |
||
351 | ADD HL,HL |
||
352 | LD (HL),D |
||
353 | DEC HL |
||
354 | LD (HL),E |
||
355 | JR WYBYOK |
||
356 | SELNSPC |
||
357 | CP 13 |
||
358 | jr NZ,SELNENT |
||
359 | PUSH HL |
||
360 | LD C,8 |
||
361 | CALL CAT2GFX |
||
362 | EX DE,HL |
||
363 | LD A,"$" |
||
364 | CALL PRGFX |
||
365 | POP DE |
||
366 | PUSH DE |
||
367 | CALL WYBPP |
||
368 | EX DE,HL |
||
369 | jr NZ,SELSPC |
||
370 | JR WYBYOKN |
||
344 | alone | 371 | ;снять пометку |
92 | DimkaM | 372 | WYBY EX DE,HL |
373 | LD HL,WYBRA |
||
374 | DEC (HL) |
||
94 | alone | 375 | LD H,D |
376 | ld L,E |
||
92 | DimkaM | 377 | DEC DE |
378 | INC HL,HL,HL |
||
379 | WYBY0 |
||
380 | DUP 4 |
||
381 | LDI |
||
382 | INC BC |
||
383 | EDUP |
||
384 | DEC C |
||
385 | jr NZ,WYBY0 |
||
386 | WYBYOK |
||
387 | selfsz=$+1 |
||
388 | LD DE,0 |
||
389 | LD HL,(selAsz) |
||
390 | jr NZ,$+6 |
||
391 | SBC HL,DE |
||
392 | JR $+3 |
||
393 | ADD HL,DE |
||
394 | LD (selAsz),HL |
||
395 | WYBYOKN |
||
396 | CALL PRHEADP |
||
397 | POP HL |
||
398 | SELDOWN LD DE,16 |
||
399 | ADD HL,DE |
||
400 | ;A<>0 |
||
401 | XOR A |
||
402 | OR (HL) |
||
403 | JP Z,OLDENTR |
||
404 | INC B |
||
405 | LD A,B |
||
94 | alone | 406 | CP 22 ;HGT |
92 | DimkaM | 407 | jr NZ,STLFIL0 |
408 | DEC B |
||
409 | LD E,#50 |
||
410 | JR SELFUDM |
||
411 | SELNENT |
||
412 | SUB 11 |
||
413 | jr NZ,SELFnU |
||
414 | LD DE,-16 |
||
415 | ADD HL,DE |
||
416 | LD A,H |
||
417 | CP CATBUF/256 |
||
418 | JP C,OLDENTR |
||
419 | DEC B |
||
420 | JP P,SDLFIL0 |
||
421 | INC B |
||
422 | LD DE,-#50 |
||
423 | JR SELFUDM |
||
424 | SELFILN SBC HL,DE |
||
425 | STLFIL0 JR SDLFIL0 |
||
426 | SELFnU |
||
427 | INC A |
||
428 | jr Z,SELDOWN |
||
429 | INC A |
||
430 | jr NZ,SELFnR |
||
431 | LD A,22*2-1 |
||
432 | SUB B |
||
433 | LD C,A |
||
434 | XOR A |
||
435 | LD DE,16 |
||
436 | SELFR0 ADD HL,DE |
||
437 | CP (HL) |
||
438 | jr Z,SELFgE |
||
439 | DEC C |
||
440 | jr NZ,SELFR0 |
||
441 | LD D,A |
||
442 | LD A,22-1 |
||
443 | SUB B |
||
444 | LD E,A |
||
445 | INC A |
||
446 | CALL SELpppp |
||
447 | LD DE,22*#50 |
||
448 | SELFUDM PUSH HL |
||
344 | alone | 449 | LD HL,(CATTOP) ;адрес графики начала видимой части каталога |
92 | DimkaM | 450 | ADD HL,DE |
451 | LD (CATTOP),HL |
||
452 | POP HL |
||
453 | JR SDLFIL0 |
||
454 | SELFgE LD HL,(CURENTR) |
||
455 | SELFgE0 LD DE,16 |
||
456 | ADD HL,DE |
||
457 | LD A,(HL) |
||
458 | SBC HL,DE |
||
459 | OR A |
||
460 | jr Z,SDLFIL0 |
||
461 | ADD HL,DE |
||
462 | INC B |
||
463 | LD A,B |
||
464 | CP 22 |
||
465 | jr NZ,SELFgE0 |
||
466 | DEC B |
||
467 | LD E,#50 |
||
468 | PUSH HL |
||
469 | LD HL,(CATTOP) |
||
470 | ADD HL,DE |
||
471 | LD (CATTOP),HL |
||
472 | POP HL |
||
473 | JR SELFgE0 |
||
474 | SELFnR |
||
475 | INC A |
||
476 | jr NZ,SELFnL |
||
477 | LD DE,-22*16 |
||
478 | ADD HL,DE |
||
479 | PUSH HL |
||
94 | alone | 480 | LD E,B |
481 | ld D,A |
||
92 | DimkaM | 482 | SELpppp |
104 | alone | 483 | EX DE,HL |
92 | DimkaM | 484 | add hl,hl |
485 | add hl,hl |
||
486 | add hl,hl |
||
487 | add hl,hl |
||
488 | EX DE,HL |
||
489 | SBC HL,DE |
||
490 | OR A |
||
491 | RET NZ |
||
492 | LD A,H |
||
493 | CP CATBUF/256 |
||
494 | POP HL |
||
495 | LD DE,-22*#50 |
||
496 | jr NC,SELFUDM |
||
497 | LD HL,CATGFX |
||
498 | LD (CATTOP),HL |
||
499 | LD HL,CATBUF |
||
94 | alone | 500 | LD B,L;0 |
92 | DimkaM | 501 | SDLFIL0 JP SELFIL0 |
502 | SELFnL |
||
503 | INC A |
||
504 | JP Z,SELHEX |
||
505 | SUB -7 |
||
506 | OR 32 |
||
507 | CP "p" |
||
508 | JP Z,SELFILT |
||
509 | CP "c" |
||
510 | JP Z,SELCREA |
||
511 | CP "n" |
||
512 | JP Z,SELCREA |
||
513 | CP "a" |
||
514 | JP Z,SELADD |
||
515 | CP "s" |
||
516 | JP Z,SELSEP |
||
517 | CP "k" |
||
518 | jr NZ,SELFINk |
||
519 | LD DE,dicszM |
||
520 | LD A,(DE) |
||
521 | ADD A,A |
||
522 | ;0=>0, -1=>-2, -#80=>0 |
||
523 | jr NZ,SELkA2 |
||
524 | jr C,SELkA2 |
||
525 | LD A,-4 |
||
526 | SELkA2 LD (DE),A |
||
527 | NEG |
||
528 | RRCA |
||
529 | RRCA |
||
530 | LD C,47 |
||
531 | INC C |
||
532 | SUB 10 |
||
533 | jr NC,$-3 |
||
534 | ADD A,10+"0" |
||
535 | LD DE,tKB+1 |
||
536 | LD (DE),A |
||
537 | DEC DE |
||
538 | LD A,C |
||
539 | LD (DE),A |
||
540 | JP REFRESH |
||
541 | SELFINk |
||
542 | CP "q" |
||
104 | alone | 543 | jr NZ,SELNQUI |
92 | DimkaM | 544 | QUIT |
545 | SELNQUI |
||
546 | CP "m" |
||
547 | jr Z,SELMET |
||
548 | CP "r" |
||
549 | jr Z,SELRAR |
||
550 | IF dolds |
||
551 | CP "+" |
||
552 | jr Z,SELdolds |
||
553 | ENDIF |
||
554 | IF nastr |
||
555 | CP "f" |
||
556 | jr Z,SELFINE |
||
557 | ENDIF |
||
558 | CP "h" |
||
559 | jr Z,SELHEA |
||
560 | ;LD E,"A" |
||
561 | ;CP "!" |
||
562 | ;jr Z,SELDEST |
||
563 | ;INC E |
||
564 | ;CP "@"|32 |
||
565 | ;jr Z,SELDEST |
||
566 | ;INC E |
||
567 | ;SUB "#" |
||
568 | ;jr Z,SELDEST |
||
569 | ;INC E |
||
570 | ;DEC A |
||
571 | ;jr Z,SELDEST |
||
572 | ;SUB "1"-"$" |
||
573 | ;CP 4 |
||
574 | ;JP C,RELDRV |
||
575 | JP SELFIL0 |
||
576 | ;SELDEST LD A,E |
||
577 | ; LD (TDEST),A |
||
578 | ; JP PRHEAD |
||
579 | SELMET |
||
580 | LD DE,tmethod |
||
581 | PUSH HL |
||
582 | Ptmets=$+1 |
||
583 | LD HL,tmets |
||
584 | BIT 7,(HL) |
||
585 | jr Z,$+5 |
||
586 | LD HL,tmets |
||
587 | LD C,H |
||
588 | LDI |
||
589 | LDI |
||
590 | LD DE,LEflag |
||
591 | LDI |
||
592 | LD DE,FMETH |
||
593 | LDI |
||
594 | LD (Ptmets),HL |
||
595 | POP HL |
||
596 | JP REFRESH |
||
597 | SELRAR |
||
598 | LD DE,extext |
||
599 | LD A,(DE) |
||
600 | XOR "z"^"a" |
||
601 | LD (DE),A |
||
602 | INC DE |
||
603 | LD A,(DE) |
||
604 | XOR "x"^"r" |
||
605 | LD (DE),A |
||
606 | JP REFRESH |
||
607 | IF dolds |
||
608 | SELdolds |
||
609 | LD DE,doldson |
||
610 | LD A,(DE) |
||
611 | XOR " "^"+" |
||
612 | LD (DE),A |
||
613 | JP REFRESH |
||
614 | ENDIF |
||
615 | SELHEA |
||
616 | LD DE,THEADON |
||
617 | LD A,(DE) |
||
618 | XOR "n"^"f" |
||
619 | LD (DE),A |
||
620 | INC DE |
||
621 | LD A,(DE) |
||
622 | XOR " "^"f" |
||
623 | LD (DE),A |
||
104 | alone | 624 | JP PRHEAD |
92 | DimkaM | 625 | |
626 | IF nastr |
||
627 | SELFINE |
||
628 | SELFINY=$+1 |
||
629 | LD E,0 ;Y |
||
630 | SELFIN0 |
||
631 | LD A,E |
||
632 | LD (SELFINY),A |
||
94 | alone | 633 | ADD A,A |
634 | add A,A |
||
635 | add A,A |
||
92 | DimkaM | 636 | ADD A,36 |
637 | LD C,#1C*8 |
||
638 | CALL 8880 |
||
639 | LD (HL),#3C;H |
||
640 | CALL IYKEY |
||
641 | LD D,0 |
||
642 | LD (HL),D |
||
643 | LD HL,SETS |
||
94 | alone | 644 | ADD HL,DE |
645 | add HL,DE |
||
92 | DimkaM | 646 | ;CP 13 |
647 | ;JP Z,OLDENTR |
||
648 | LD BC,SELFIN0 |
||
649 | PUSH BC |
||
650 | LD C,(HL) |
||
651 | INC HL |
||
652 | LD B,(HL) |
||
653 | SUB 8 |
||
654 | jr NZ,FINnL |
||
655 | LD A,(BC) |
||
656 | CP #80 |
||
657 | RET Z |
||
658 | PUSH BC |
||
659 | LD HL,TSETMAY |
||
660 | CPIR |
||
661 | FINLQ POP BC |
||
662 | LD A,(HL) |
||
663 | LD (BC),A |
||
664 | PRSET |
||
665 | PUSH DE |
||
666 | LD HL,#589C |
||
667 | LD DE,29 |
||
668 | LD BC,sets*256+#17 |
||
669 | PRSET0 LD (HL),C |
||
670 | INC L |
||
671 | LD (HL),C |
||
672 | INC L |
||
673 | LD (HL),C |
||
674 | INC L |
||
675 | LD (HL),C |
||
676 | ADD HL,DE |
||
677 | DJNZ PRSET0 |
||
678 | LD DE,#409C |
||
679 | LD HL,SETS |
||
680 | ;LD C,sets |
||
681 | PRSET1 |
||
682 | CALL PRTHI32 |
||
683 | ;PUSH BC |
||
684 | LD C,(HL) |
||
685 | INC HL |
||
686 | LD B,(HL) |
||
687 | LD A,(BC) |
||
688 | ;POP BC |
||
689 | CALL PRHEX |
||
690 | CALL PRTHI32 |
||
691 | DEC E,E,E,E |
||
692 | CALL NXTLIN |
||
693 | INC L |
||
694 | ;DEC C |
||
695 | jr NZ,PRSET1 |
||
696 | POP DE |
||
697 | RET |
||
698 | FINnL DEC A |
||
699 | jr NZ,FINnR |
||
700 | LD A,(BC) |
||
701 | CP #FF |
||
702 | RET Z |
||
703 | PUSH BC |
||
704 | LD HL,TSETMAY |
||
705 | CPIR |
||
706 | DEC HL,HL |
||
707 | JR FINLQ |
||
708 | FINnR DEC A |
||
709 | jr NZ,FINnD |
||
710 | LD A,sets-1 |
||
711 | CP E |
||
712 | RET Z |
||
713 | INC E |
||
714 | RET |
||
715 | FINnD DEC A |
||
716 | JP NZ,RELOAD |
||
717 | CP E |
||
718 | RET Z |
||
719 | DEC E |
||
720 | RET |
||
721 | ENDIF |
||
722 | WYBPP |
||
723 | WYBRA=$+1 |
||
724 | LD C,0 |
||
725 | LD A,C |
||
726 | ;OR A |
||
727 | ;JZ WYB0Q |
||
728 | SUB 1 |
||
729 | RET C |
||
730 | LD HL,filez |
||
731 | WYB0 LD A,(HL) |
||
732 | INC HL |
||
733 | CP E |
||
734 | jr NZ,WYBN |
||
735 | LD A,(HL) |
||
736 | CP D |
||
737 | ;JZ WYBY |
||
738 | RET Z |
||
739 | WYBN INC HL,HL,HL |
||
740 | DEC C |
||
741 | jr NZ,WYB0 |
||
742 | INC C |
||
743 | RET |
||
744 | |||
745 | ;separate files pack |
||
746 | SELSEP |
||
747 | CALL SOZDWYB |
||
748 | LD HL,SEPloop |
||
749 | LD (ADDjpnz),HL |
||
750 | SEPloop |
||
751 | LD HL,4 |
||
344 | alone | 752 | LD (filezsz),HL ;чтоб не делать packlist |
753 | CALL OUTpgTEXT ;вплоть до DOS в LZ |
||
92 | DimkaM | 754 | IF ay==0 |
755 | OUT (-2),A |
||
756 | ENDIF |
||
757 | PUSH AF |
||
758 | ;CALL GETfCUR ;hl=archive name |
||
759 | SET 7,H ;skip hob.flag |
||
760 | JR SEPlopU |
||
761 | |||
762 | ;create rar |
||
763 | SELCREA |
||
94 | alone | 764 | ;a='n' (new)/'c' (create) |
92 | DimkaM | 765 | PUSH AF |
94 | alone | 766 | ;PUSH HL |
344 | alone | 767 | ;CALL SOZDWYB ;если файлы не выбраны, то выбрать текущий (hl) |
99 | alone | 768 | ld hl,WYBRA |
769 | ld (hl),1 |
||
94 | alone | 770 | ;POP HL |
92 | DimkaM | 771 | SEPlopU ;LD DE,ARCNAME |
772 | ;LD BC,8 |
||
773 | ;LDIR |
||
774 | ld hl,ARCNAME+8;EX DE,HL |
||
775 | LD A,(THEADON) |
||
776 | CP "n" |
||
777 | LD (HL)," " |
||
94 | alone | 778 | jr NZ,$+4 ;no rar header |
92 | DimkaM | 779 | LD (HL),"r" |
344 | alone | 780 | ;CALL CON1NAM ;включает tosave, исправляет имя |
781 | ;TODO скопировать имя из (curfilenameaddr) в fdir |
||
104 | alone | 782 | ;jr $ |
783 | ld hl,(curfilenameaddr) |
||
609 | alone | 784 | inc hl |
785 | ld a,(hl) |
||
786 | cp ':' |
||
787 | inc hl |
||
788 | jr z,$+4 |
||
789 | dec hl |
||
790 | dec hl |
||
791 | ld a,(hl) |
||
792 | cp '/' |
||
793 | jr nz,$+3 |
||
794 | inc hl |
||
104 | alone | 795 | ld de,fdir |
796 | call strcopy |
||
99 | alone | 797 | call setfilenamelen |
92 | DimkaM | 798 | POP AF |
799 | PUSH AF |
||
344 | alone | 800 | ;CP pgTEXT ;separate(после OUTpgTEXT) |
92 | DimkaM | 801 | PUSH BC,DE,HL |
802 | ;LD C,#12 ;del |
||
803 | PUSH AF |
||
804 | ;CALL NZ,DOD |
||
344 | alone | 805 | CALL PKST ;установить hl', de' |
94 | alone | 806 | LD HL,(extext);"zx" |
92 | DimkaM | 807 | POP AF |
94 | alone | 808 | ;jr Z,CRyOF ;separate |
92 | DimkaM | 809 | LD A,(THEADON) |
810 | CP "n" |
||
811 | jr Z,CRnOFF1 |
||
94 | alone | 812 | ;no rar header |
92 | DimkaM | 813 | LD A,(WYBRA) |
814 | DEC A |
||
344 | alone | 815 | jr NZ,$+5 ;TODO зачем??? |
92 | DimkaM | 816 | CRyOF LD HL,(unpsz) |
817 | CRnOFF1 |
||
818 | LD (ARCNAME+9),HL |
||
819 | ;LD A,46 |
||
820 | ;LD (rrrE),A ;ini ext |
||
821 | ;CALL READs8 |
||
822 | ;LD HL,(s8+#E1);1st free |
||
823 | ;LD (SAVE1st),HL |
||
94 | alone | 824 | |
825 | ;TODO ARCNAME->OUTNAM |
||
826 | call SAVECREATE ;OUTNAM=name 8.3 |
||
106 | alone | 827 | ;a=1: file exists, add to end |
828 | dec a |
||
829 | jr z,CREAfil ;don't add rar header |
||
94 | alone | 830 | |
92 | DimkaM | 831 | LD A,(THEADON) |
832 | CP "n" |
||
94 | alone | 833 | jr NZ,CREAfil ;no rar header |
92 | DimkaM | 834 | LD IX,RARHEAD |
835 | LD B,7 |
||
836 | CALL BLOCK |
||
837 | LD IX,arhd |
||
838 | LD B,13-2 |
||
839 | ;B=len-2(CRC) |
||
840 | CALL UPCRC1 |
||
841 | LD IX,arhd-2 |
||
842 | LD (arhd-2),DE |
||
843 | LD B,13 |
||
844 | CALL BLOCK |
||
845 | CREAfil |
||
846 | POP HL,DE,BC |
||
847 | POP AF |
||
848 | CP "n";New |
||
849 | JP NZ,ADDend;Create |
||
106 | alone | 850 | CALL SAVE_ ;flush outfile |
851 | call SAVECLOSE |
||
92 | DimkaM | 852 | JR RELOAZ |
853 | SELFILT |
||
344 | alone | 854 | CALL CLA ;сбрасывет lded |
94 | alone | 855 | ;XOR A |
344 | alone | 856 | ;CALL CONVNAM ;почему выключается tosave??? TODO |
94 | alone | 857 | |
858 | ;hl=(ADRfrom) |
||
859 | |||
344 | alone | 860 | CALL PKST ;установить hl', de' |
92 | DimkaM | 861 | ;header off |
862 | PUSH HL |
||
863 | LD HL,CPn |
||
344 | alone | 864 | LD (HL),H ;<>#6E ;no CRC??? TODO почему??? |
92 | DimkaM | 865 | POP HL |
99 | alone | 866 | |
92 | DimkaM | 867 | CALL PACKfil |
344 | alone | 868 | CALL QUIT_ ;печать статистики |
92 | DimkaM | 869 | ;CALL 8026 |
870 | ;JC $-3 |
||
94 | alone | 871 | RELOAZ |
99 | alone | 872 | ;jr $ |
94 | alone | 873 | ret ;JP RELOAD |
874 | |||
92 | DimkaM | 875 | SELADD |
876 | CALL SOZDWYB |
||
877 | ADDloop |
||
878 | ;CALL READs8 |
||
344 | alone | 879 | ;LD HL,(s8+#E4) ;число файлов на диске |
92 | DimkaM | 880 | ; XOR A |
881 | ; CP L |
||
882 | ;jr Z,RELOAZ ;no archive |
||
883 | ;DEC L |
||
104 | alone | 884 | ;LD H,A |
92 | DimkaM | 885 | ;ld D,H |
886 | ;ADD HL,HL,HL,HL,HL,HL,HL,HL |
||
104 | alone | 887 | ;LD E,H |
92 | DimkaM | 888 | ;ld H,dirsec/256 |
889 | ;PUSH HL |
||
890 | ;LD L,D |
||
891 | ;LD BC,#105 |
||
892 | ;CALL DOD ;TODO |
||
344 | alone | 893 | ;POP HL ;hl=дескриптор последнего архива на диске |
92 | DimkaM | 894 | ;LD A,(HL) |
895 | ;DEC A |
||
896 | ;jr Z,RELOAZ ;no archive |
||
897 | ;LD DE,ARCNAME |
||
898 | ;LD BC,11 |
||
899 | ;LDIR |
||
900 | ;DEC L |
||
901 | ld hl,ARCNAME+8+2 |
||
902 | LD A,"r" |
||
903 | CP (HL) |
||
904 | jr NZ,RELnrar ;rzx |
||
905 | DEC L |
||
906 | LD A,"a" |
||
907 | CP (HL) |
||
908 | jr Z,RELyrar |
||
909 | INC L |
||
910 | RELnrar |
||
911 | LD A,(extext+1) |
||
912 | CP (HL) |
||
913 | jr NZ,RELOAZ ;not RZX |
||
914 | DEC L |
||
915 | LD A,(extext) |
||
916 | CP (HL) |
||
917 | jr NZ,RELOAZ ;not RZX |
||
918 | RELyrar DEC L |
||
919 | ;LD A,(HL) |
||
920 | ;DEC A |
||
921 | ;CP "r"-1 |
||
922 | ;jr NZ,$+4 |
||
923 | ;LD A,46 |
||
924 | ;LD (rrrE),A ;ini ext |
||
344 | alone | 925 | ;узнаем длину |
92 | DimkaM | 926 | INC L,L,L |
927 | LD C,(HL) |
||
928 | INC L |
||
929 | LD B,(HL) |
||
930 | INC L |
||
931 | LD E,(HL) ;sectors |
||
932 | ;LD (SAV_a),HL |
||
933 | PUSH DE |
||
934 | PUSH BC |
||
344 | alone | 935 | ;архив надо удалить |
92 | DimkaM | 936 | ;LD A,24 |
937 | ;LD (SAV_jr),A |
||
938 | CALL CON1NAM |
||
939 | ;PUSH BC,DE,HL |
||
344 | alone | 940 | ;грузим последний сектор архива |
92 | DimkaM | 941 | ;LD HL,(s8+#E1) ;1st free |
942 | ;DEC L |
||
943 | ;JP P,$+6 |
||
944 | ;LD L,15 |
||
945 | ;DEC H |
||
946 | ;LD (SAVE1st),HL |
||
947 | ;EX DE,HL |
||
948 | ;LD HL,fout |
||
949 | ; LD BC,#105 |
||
950 | ;CALL DOD |
||
951 | ;POP HL,DE,BC |
||
952 | EXX |
||
953 | POP BC |
||
954 | DEC BC |
||
955 | LD L,C |
||
956 | LD H,fout/256 |
||
957 | INC HL |
||
958 | ;HL=fout+1..256 |
||
959 | POP DE |
||
960 | DEC E |
||
961 | EXX |
||
104 | alone | 962 | ADDend |
963 | ;jr $ |
||
106 | alone | 964 | ld a,(savefilehandle) |
965 | ld b,a |
||
966 | OS_TELLHANDLE |
||
967 | ;out: dehl=offset |
||
968 | ld (recordstart),hl |
||
969 | ld (recordstartHSW),de |
||
970 | |||
104 | alone | 971 | ld de,(curfilenameaddr) |
972 | call openstream_file |
||
973 | CALL PACKfil |
||
106 | alone | 974 | call SAVE_ ;flush outfile |
975 | push hl |
||
976 | recordstart=$+1 |
||
977 | ld hl,0 |
||
978 | recordstartHSW=$+1 |
||
979 | ld de,0 |
||
980 | ;dehl=offset |
||
981 | call SAVEREWIND |
||
982 | pop hl |
||
344 | alone | 983 | CALL BYTsPPPfout ;сохранить начало fout в начало файла (TODO или блока???) |
106 | alone | 984 | call SAVECLOSE |
104 | alone | 985 | call closestream_file |
986 | |||
987 | ld hl,(curfilenameaddr) |
||
988 | call prtext |
||
989 | ld hl,tadded |
||
990 | call prtext |
||
991 | |||
92 | DimkaM | 992 | CALL QUIT_ |
99 | alone | 993 | |
994 | if 1==0 |
||
344 | alone | 995 | ;таблица упакованных файлов для выгрузки отдельно? |
92 | DimkaM | 996 | fileCUR=$+1 |
997 | LD HL,0;(fileCUR) |
||
998 | LD DE,(paksz) |
||
999 | LD (HL),E |
||
1000 | INC HL |
||
1001 | LD (HL),D |
||
1002 | INC HL |
||
1003 | LD DE,(unpsz) |
||
1004 | LD (HL),E |
||
1005 | INC HL |
||
1006 | LD (HL),D |
||
1007 | INC HL |
||
1008 | LD (fileCUR),HL |
||
99 | alone | 1009 | endif |
1010 | |||
92 | DimkaM | 1011 | LD HL,WYBRA |
1012 | DEC (HL) |
||
1013 | ADDjpnz=$+1 |
||
1014 | JP NZ,ADDloop |
||
1015 | LD A,(THEADON) |
||
1016 | CP "n" |
||
1017 | jr Z,RELOAT |
||
1018 | filezsz=$+1 |
||
1019 | LD DE,0 |
||
1020 | LD A,E |
||
344 | alone | 1021 | SUB 4;паковали 1 файл=его параметры в дескрипторе "архива" |
92 | DimkaM | 1022 | OR D |
1023 | jr Z,RELOAT |
||
1024 | PUSH DE |
||
1025 | ;LD HL,TPLIST |
||
1026 | ;LD C,#13 |
||
1027 | ;CALL DOD |
||
1028 | ;LD C,#12;del |
||
1029 | ;CALL DOD |
||
344 | alone | 1030 | LD HL,filez;отсюда савить не хочт |
92 | DimkaM | 1031 | LD D,keys/256 |
1032 | PUSH DE |
||
1033 | LD B,2 |
||
1034 | LDIR ;??? TODO |
||
1035 | POP HL |
||
1036 | ;filezsz=$+1 |
||
1037 | ;LD DE,0 |
||
1038 | POP DE |
||
1039 | ;LD C,#B;saveC |
||
1040 | ;CALL DOD |
||
1041 | |||
1042 | ;TODO save file hl=addr, de=size |
||
1043 | |||
99 | alone | 1044 | RELOAT JP RELOAZ;RELOAD |
92 | DimkaM | 1045 | |
1046 | ;3 |
||
1047 | CON1NAM |
||
1048 | ;CALL GETfCUR |
||
1049 | ld hl,ARCNAME |
||
1050 | LD A,1 |
||
1051 | CONVNAM |
||
94 | alone | 1052 | ;out: hl=(ADRfrom) |
92 | DimkaM | 1053 | LD (tosave),A |
106 | alone | 1054 | ;CALL OUTpgTEXT |
92 | DimkaM | 1055 | LD BC,11 |
1056 | ADD HL,BC |
||
1057 | ;BIT 7,H |
||
1058 | ;SET 7,H |
||
1059 | LD C,(HL) |
||
1060 | INC HL |
||
99 | alone | 1061 | LD B,(HL) ;file length TODO |
92 | DimkaM | 1062 | INC HL |
1063 | LD A,(HL) ;<>0 |
||
344 | alone | 1064 | ;jr NZ,HOBNJR ;TODO убрать хобеты |
104 | alone | 1065 | ; LD B,(HL) |
92 | DimkaM | 1066 | ; ld C,17 |
1067 | ; PUSH HL |
||
1068 | ; PUSH HL |
||
1069 | ; LD HL,CNVNMHQ |
||
1070 | ; EX (SP),HL |
||
1071 | ; XOR A |
||
1072 | ;HOBNJR |
||
106 | alone | 1073 | ;ld bc,0x100 |
1074 | ;LD (unpsz),BC |
||
92 | DimkaM | 1075 | |
1076 | PUSH BC,HL |
||
99 | alone | 1077 | LD E,A ;??? TODO |
92 | DimkaM | 1078 | RES 2,L |
1079 | DEC L |
||
1080 | PUSH HL |
||
1081 | LD BC,8 |
||
1082 | FNLEN0 DEC HL |
||
1083 | LD A,(HL) |
||
1084 | CP 32 |
||
1085 | jr NZ,FNLENN |
||
1086 | DEC C |
||
1087 | jr NZ,FNLEN0 |
||
344 | alone | 1088 | INC C ;против пустого имени |
92 | DimkaM | 1089 | INC L |
1090 | FNLENN |
||
1091 | IF filter==0 |
||
1092 | PUSH BC |
||
1093 | LD A,". |
||
1094 | CPDR |
||
1095 | POP BC |
||
1096 | ENDIF |
||
1097 | POP HL |
||
1098 | IF filter==0 |
||
344 | alone | 1099 | JZ $+4 ;против 12.34< > |
92 | DimkaM | 1100 | ENDIF |
1101 | INC E |
||
1102 | DEC E |
||
1103 | PUSH HL |
||
1104 | PUSH DE |
||
1105 | Lfname=$+1 |
||
1106 | LD DE,fdir |
||
1107 | LD A,(HL) |
||
1108 | RES 3,L |
||
1109 | IF filter |
||
1110 | PUSH AF |
||
1111 | filt0 LD A,(HL) |
||
1112 | LD (HL),"_" |
||
1113 | CP 33 |
||
1114 | jr C,filtGOO |
||
1115 | CP "." |
||
1116 | jr Z,filtGOO |
||
1117 | LD (HL),A |
||
1118 | CP "+" |
||
1119 | jr Z,filtBAD |
||
1120 | CP 34 |
||
1121 | jr Z,filtBAD |
||
1122 | CP "*" |
||
1123 | jr Z,filtBAD |
||
1124 | CP "/" |
||
1125 | jr Z,filtBAD |
||
1126 | CP 0x5c;"\" |
||
1127 | jr Z,filtBAD |
||
1128 | CP ":" |
||
1129 | jr C,filtGOO |
||
1130 | CP "@" |
||
1131 | jr NC,filtGOO |
||
1132 | filtBAD LD (HL),"-" |
||
1133 | filtGOO LDI |
||
1134 | JP PE,filt0 |
||
1135 | POP AF |
||
1136 | ELSE |
||
1137 | LDIR |
||
1138 | ENDIF |
||
1139 | EX DE,HL |
||
1140 | POP BC |
||
1141 | POP DE |
||
1142 | jr Z,FNLyEXT |
||
1143 | CP " " |
||
1144 | jr Z,FNLnEXT |
||
1145 | FNLyEXT LD (HL),"." |
||
1146 | INC HL |
||
1147 | INC C |
||
1148 | DEC C |
||
1149 | jr NZ,$+5 |
||
1150 | LD (HL),"$" |
||
1151 | INC HL |
||
1152 | LD (HL),A |
||
1153 | INC HL |
||
1154 | PUSH HL |
||
1155 | EX DE,HL |
||
1156 | INC HL |
||
104 | alone | 1157 | ;CALL goodH3 |
92 | DimkaM | 1158 | LD B,(HL) |
1159 | INC HL |
||
1160 | LD C,(HL) |
||
104 | alone | 1161 | INC HL |
92 | DimkaM | 1162 | POP HL |
1163 | LD A," " |
||
1164 | CP B |
||
1165 | jr Z,$+4 |
||
1166 | LD (HL),B |
||
1167 | INC HL |
||
1168 | CP C |
||
1169 | jr Z,$+4 |
||
1170 | LD (HL),C |
||
1171 | INC HL |
||
99 | alone | 1172 | FNLnEXT |
1173 | call setfilenamelen |
||
92 | DimkaM | 1174 | POP HL,BC |
1175 | |||
1176 | INC L |
||
1177 | LD E,(HL) |
||
1178 | INC L |
||
1179 | LD D,(HL) |
||
1180 | CNVNMUSE |
||
106 | alone | 1181 | if 1==0 |
344 | alone | 1182 | ;догрузить 32К |
1183 | ld bc,0x100;0x8000 ;костыль file size TODO |
||
92 | DimkaM | 1184 | DEC BC |
1185 | LD A,B |
||
1186 | INC B |
||
1187 | CP MAX/256 |
||
1188 | INC A |
||
104 | alone | 1189 | jr C,CNVNMUSEnokus |
344 | alone | 1190 | LD BC,packfilsz;#8000 ;кусками по #8000 |
106 | alone | 1191 | ;LD (kus),BC |
104 | alone | 1192 | CNVNMUSEnokus |
92 | DimkaM | 1193 | SUB B |
344 | alone | 1194 | LD (FILEremain),A ;важно 0/не0 |
92 | DimkaM | 1195 | XOR A |
1196 | LD L,A |
||
1197 | SUB B |
||
1198 | LD H,A |
||
106 | alone | 1199 | ;LD (ADRfrom),HL |
344 | alone | 1200 | ;LD C,5 ;TODO убрать |
104 | alone | 1201 | endif |
92 | DimkaM | 1202 | RET |
94 | alone | 1203 | |
1204 | if 1==0 |
||
344 | alone | 1205 | ;дб место под 17b заголовок с адр файла |
92 | DimkaM | 1206 | CNVNMHQ |
1207 | EX DE,HL |
||
1208 | EX (SP),HL |
||
1209 | DEC B ;v11 |
||
1210 | PUSH BC |
||
1211 | LD C,17 |
||
1212 | LD (kus),BC |
||
1213 | LD BC,13 |
||
1214 | OR A |
||
1215 | SBC HL,BC |
||
1216 | LDIR |
||
344 | alone | 1217 | LD A,(HL) ;каталог там же! |
92 | DimkaM | 1218 | EX DE,HL |
1219 | LD (HL),B |
||
1220 | INC HL |
||
1221 | LD (HL),A |
||
1222 | LD DE,105 |
||
1223 | LD L,D |
||
1224 | LD B,15 |
||
1225 | HOB0 LD A,(HL) |
||
1226 | ADD A,E |
||
1227 | LD E,A |
||
1228 | LD A,(HL) |
||
1229 | ADC A,D |
||
1230 | LD D,A |
||
1231 | INC HL |
||
1232 | DJNZ HOB0 |
||
1233 | LD (HL),E |
||
1234 | INC HL |
||
1235 | LD (HL),D |
||
1236 | INC HL |
||
1237 | POP BC |
||
1238 | POP DE |
||
94 | alone | 1239 | RET |
104 | alone | 1240 | endif |
92 | DimkaM | 1241 | |
99 | alone | 1242 | setfilenamelen |
1243 | ld hl,fdir |
||
1244 | call strlen |
||
1245 | ;LD DE,-fdir |
||
1246 | ;ADD HL,DE |
||
1247 | LD (namsz),HL |
||
1248 | LD BC,32 |
||
1249 | ADD HL,BC |
||
1250 | LD (fihdsz),HL |
||
1251 | ret |
||
1252 | |||
92 | DimkaM | 1253 | SOZDWYB |
344 | alone | 1254 | ;hl=адрес текущего дескриптора в CATBUF |
92 | DimkaM | 1255 | CALL CLA |
104 | alone | 1256 | ;LD DE,filez |
344 | alone | 1257 | ;ld (fileCUR),DE ;таблица упакованных файлов для выгрузки отдельно? |
92 | DimkaM | 1258 | LD A,(WYBRA) |
1259 | OR A |
||
344 | alone | 1260 | jr NZ,SOZDWYn ;уже есть выбранные файлы |
92 | DimkaM | 1261 | INC A |
1262 | LD (WYBRA),A |
||
344 | alone | 1263 | LD (filez),HL ;hl=адрес текущего дескриптора в CATBUF |
92 | DimkaM | 1264 | SOZDWYn |
1265 | ADD A,A |
||
94 | alone | 1266 | LD B,A ;b=selfiles*2 |
92 | DimkaM | 1267 | ADD A,A |
1268 | LD E,A |
||
1269 | LD A,0 |
||
1270 | ADC A,A |
||
94 | alone | 1271 | LD D,A ;de=selfiles*4 |
92 | DimkaM | 1272 | LD (filezsz),DE |
1273 | IF adir==0 |
||
1274 | RET |
||
1275 | ELSE |
||
1276 | ;CALL 8026 |
||
1277 | ;RET C |
||
1278 | CALL CLS |
||
94 | alone | 1279 | ;LD (HL),#44 |
1280 | ;LDIR |
||
92 | DimkaM | 1281 | INCLX INC B |
1282 | INPUT0 |
||
1283 | LD HL,fdir |
||
1284 | PUSH BC |
||
1285 | LD DE,#40E0 |
||
1286 | CALL PR_B |
||
104 | alone | 1287 | DEC HL |
92 | DimkaM | 1288 | dec E |
1289 | POP BC |
||
1290 | DEC E |
||
1291 | ;LD A,"_" |
||
1292 | ;CALL PRTHI |
||
1293 | CALL PRTHI32 |
||
1294 | CALL IYKEY |
||
116 | alone | 1295 | CP key_enter |
104 | alone | 1296 | jr Z,INPOK |
116 | alone | 1297 | cp 0x20 |
344 | alone | 1298 | jr C,INPDEL ;прочие системные кнопки не нужны |
92 | DimkaM | 1299 | ;JP M,INPUT0 |
1300 | CP "/" |
||
1301 | jr NZ,$+4 |
||
1302 | LD A,0x5c;"\" |
||
1303 | LD (HL),A |
||
1304 | LD A,B |
||
1305 | CP adir;+1 |
||
1306 | jr NZ,INCLX |
||
1307 | INPDEL DJNZ INPUT0 |
||
1308 | JR INCLX |
||
1309 | INPOK |
||
1310 | LD (HL),0x5c;"\" |
||
1311 | INC HL |
||
1312 | LD (Lfname),HL |
||
1313 | ENDIF |
||
1314 | CLA |
||
1315 | PUSH HL |
||
1316 | CALL CLS |
||
94 | alone | 1317 | ;LD B,3 |
1318 | ;LDIR |
||
344 | alone | 1319 | ;LD (lded),BC ;TODO куда-то в другое место |
92 | DimkaM | 1320 | POP HL |
1321 | RET |
||
1322 | |||
1323 | |||
104 | alone | 1324 | CLPG |
92 | DimkaM | 1325 | push af |
1326 | CALL OUTME |
||
106 | alone | 1327 | if 1==1 |
1328 | ld hl,0xc000 |
||
1329 | ld de,0xc001 |
||
1330 | ld bc,0x3fff |
||
1331 | ld (hl),l;0 |
||
1332 | ldir |
||
344 | alone | 1333 | else ;может запортить bfxx |
92 | DimkaM | 1334 | LD HL,0 |
1335 | LD (CLPGSP),SP |
||
1336 | LD SP,HL |
||
1337 | LD C,2 |
||
1338 | LD B,L |
||
1339 | CLPG0 DUP 16 |
||
1340 | PUSH HL |
||
1341 | EDUP |
||
1342 | DJNZ CLPG0 |
||
1343 | DEC C |
||
1344 | JR NZ,CLPG0 |
||
1345 | CLPGSP=$+1 |
||
104 | alone | 1346 | LD SP,0 |
106 | alone | 1347 | endif |
92 | DimkaM | 1348 | pop af |
1349 | RET |
||
1350 | |||
1351 | IYKEY |
||
1352 | PUSH HL |
||
1353 | ;LD HL,23560 |
||
1354 | ;LD (HL),H |
||
1355 | ;LD A,(HL) |
||
1356 | ;CP H |
||
104 | alone | 1357 | ;jr Z,$-2 |
1358 | push bc |
||
1359 | push de |
||
1360 | push ix |
||
344 | alone | 1361 | push iy ;TODO надо ли альтернативные? |
104 | alone | 1362 | YIELDGETKEYLOOP |
1363 | pop iy |
||
1364 | pop ix |
||
1365 | pop de |
||
92 | DimkaM | 1366 | pop bc |
1367 | POP HL |
||
1368 | RET |
||
1369 | ;2 |
||
1370 | UPCRC1 |
||
104 | alone | 1371 | LD HL,-1 |
1372 | ld D,H |
||
92 | DimkaM | 1373 | ld E,L |
1374 | UPCRC PUSH BC |
||
1375 | LD C,(IX) |
||
1376 | CALL crcpp |
||
1377 | POP BC |
||
1378 | INC IX |
||
1379 | DJNZ UPCRC |
||
1380 | INVCRC CALL $+3 |
||
1381 | EX DE,HL |
||
1382 | INVHL LD A,H |
||
1383 | CPL |
||
1384 | LD H,A |
||
1385 | LD A,L |
||
1386 | CPL |
||
1387 | LD L,A |
||
1388 | RET |
||
1389 | crcpp |
||
1390 | LD B,8 |
||
1391 | crclp LD A,E |
||
1392 | XOR C |
||
104 | alone | 1393 | SRL C |
92 | DimkaM | 1394 | srl H |
104 | alone | 1395 | RR L |
1396 | rr D |
||
92 | DimkaM | 1397 | rr E |
1398 | RRA |
||
1399 | jr NC,noxor |
||
1400 | LD A,H |
||
1401 | XOR #ED |
||
1402 | LD H,A |
||
1403 | LD A,L |
||
1404 | XOR #B8 |
||
1405 | LD L,A |
||
1406 | LD A,D |
||
1407 | XOR #83 |
||
1408 | LD D,A |
||
1409 | LD A,E |
||
1410 | XOR #20 |
||
1411 | LD E,A |
||
1412 | noxor DJNZ crclp |
||
1413 | RET |
||
1414 | |||
1415 | IF ay |
||
1416 | DW 300,400,500 |
||
1417 | DB 0 |
||
1418 | DB 7<3 |
||
1419 | DB 16,16,16 |
||
1420 | DW 6700 |
||
1421 | DB 1 |
||
1422 | AYREGE |
||
1423 | ENDIF |
||
1424 | tmets |
||
1425 | DB "fa",24,"4" |
||
1426 | DB "pu",24,"4" |
||
1427 | DB "be",40,"5" |
||
1428 | DB -1 |
||
1429 | IF nastr |
||
1430 | TSETMAY=$-1 |
||
1431 | DB #FE,#FD,#FC,#FA,#F8,#F4,#F0 |
||
1432 | DB #E8,#E0,#D0,#C0,#A0,#80 |
||
1433 | ENDIF |
||
1434 | TPLIST |
||
1435 | DB "packlistC" |
||
1436 | THEAD |
||
1437 | DB "to A",13 |
||
1438 | TDEST=$-2 |
||
1439 | DB "Header on ",13 |
||
1440 | THEADON=$-3 |
||
1441 | DB "Mark ",0 |
||
1442 | TMENU |
||
1443 | DB " free",13 |
||
1444 | tMeth |
||
1445 | DB "Method:" |
||
1446 | tmethod DB "best" |
||
1447 | tKB DB "32K",13 |
||
1448 | DB 13 |
||
1449 | DB "1-4 drives",13 |
||
1450 | IF nastr |
||
1451 | DB "Finetune" |
||
1452 | ENDIF |
||
1453 | DB 13 |
||
1454 | DB "Pack test",13 |
||
1455 | DB "Separate pack" |
||
1456 | DB 13,"Create Rzx" |
||
1457 | extext=$-2 |
||
1458 | IF dolds |
||
1459 | doldson DB " " |
||
1460 | ENDIF |
||
1461 | DB 13 |
||
1462 | DB "New empty",13 |
||
1463 | DB "Add",13 |
||
1464 | DB 13 |
||
1465 | DB "Quit to DOS" |
||
1466 | NOP |
||
1467 | RARHEAD |
||
1468 | DB "Rar!",#1A,7,0 |
||
1469 | DW 0 ;CRC |
||
1470 | arhd DB #73 |
||
1471 | DW 0 |
||
1472 | DW 13 |
||
1473 | DW 0 |
||
1474 | DW 0,0 |
||
1475 | |||
1476 | fihd DB #74 |
||
1477 | DW #8000 |
||
1478 | fihdsz DW 0 |
||
1479 | paksz DS 4 |
||
1480 | unpsz DS 4 |
||
1481 | DB 82 |
||
1482 | filcrc DS 4 |
||
1483 | DS 4 ;TIME |
||
1484 | DB 20 ;VER |
||
1485 | FMETH DB "5" |
||
1486 | namsz DW 0 |
||
1487 | DS 4 ;ATTR |
||
99 | alone | 1488 | fdir ;DB " ";filename.$diz |
1489 | db "sometext.flz" |
||
1490 | ds fdir+256-$ |
||
1491 | ;Konez=$+13+adir |
||
92 | DimkaM | 1492 | |
99 | alone | 1493 | ;WASSETS |
92 | DimkaM | 1494 | ;DISP #5B05;(#5B5C)=#10 |
99 | alone | 1495 | ;GDESETS |
92 | DimkaM | 1496 | QUIT_ |
1497 | XOR A |
||
1498 | OUT (-2),A |
||
99 | alone | 1499 | ;CALL CLS |
1500 | ;INC H |
||
1501 | ;inc D |
||
1502 | ;LD (HL),71 |
||
1503 | ;LDIR |
||
92 | DimkaM | 1504 | LD HL,(unpsz) |
1505 | LD DE,#488A |
||
1506 | CALL PRNUM2 |
||
1507 | LD HL,(Lfname) |
||
1508 | LD E,#4B |
||
1509 | LD A,(namsz) |
||
1510 | SUB L |
||
1511 | ADD A,fdir&0xff |
||
1512 | LD B,A |
||
1513 | CALL PR_B |
||
1514 | LD HL,(paksz) |
||
1515 | LD E,#AA |
||
1516 | PRNUM2 |
||
1517 | PUSH HL |
||
1518 | CALL PRNUMD |
||
1519 | LD A,"=" |
||
1520 | CALL PRTHI |
||
1521 | POP BC |
||
1522 | PRNUMH |
||
1523 | LD A,"#" |
||
1524 | CALL PRTHI |
||
1525 | LD A,B |
||
1526 | CALL PRHEX |
||
1527 | LD A,C |
||
1528 | PRHEX |
||
1529 | CALL PRHEXD |
||
1530 | PRHEXD RRCA |
||
1531 | RRCA |
||
1532 | RRCA |
||
1533 | RRCA |
||
1534 | PUSH AF |
||
1535 | AND 15 |
||
1536 | CP 10 |
||
1537 | CCF |
||
1538 | ADC A,"0" |
||
1539 | DAA |
||
1540 | CALL PRTHI |
||
1541 | POP AF |
||
1542 | RET |
||
1543 | PRNUM |
||
1544 | LD A,PRNUMH-$-2 |
||
104 | alone | 1545 | LD H,B |
92 | DimkaM | 1546 | ld L,C |
1547 | PRNUMD LD BC,10000 |
||
1548 | CALL PRDIG |
||
1549 | PRNUM4 LD BC,1000 |
||
1550 | CALL PRDIG |
||
1551 | PRNUM3 LD BC,100 |
||
1552 | CALL PRDIG |
||
1553 | LD C,10 |
||
1554 | CALL PRDIG |
||
1555 | LD C,1 |
||
1556 | PRDIG |
||
1557 | LD A,"0"-1 |
||
1558 | OR A |
||
1559 | INC A |
||
1560 | SBC HL,BC |
||
1561 | jr NC,$-3 |
||
1562 | ADD HL,BC |
||
1563 | PRJR jr NC,PR8X8 |
||
1564 | PRTHI |
||
1565 | if 1==0 |
||
1566 | PUSH BC,DE,HL |
||
1567 | CALL BEFOPR |
||
1568 | PRTHI0 LD A,(HL) |
||
1569 | RRCA |
||
1570 | OR (HL) |
||
1571 | LD (DE),A |
||
1572 | INC L,D |
||
1573 | DJNZ PRTHI0 |
||
1574 | POP HL,DE,BC |
||
1575 | INC E |
||
1576 | endif |
||
1577 | RET |
||
104 | alone | 1578 | |
1579 | if 1==0 ;TODO |
||
92 | DimkaM | 1580 | PR1234 |
1581 | LD DE,#5941 |
||
104 | alone | 1582 | endif |
92 | DimkaM | 1583 | PR88HEX |
1584 | LD A,H |
||
1585 | CALL PR12 |
||
1586 | LD A,L |
||
1587 | PR12 PUSH AF |
||
1588 | RRA |
||
1589 | RRA |
||
1590 | RRA |
||
1591 | RRA |
||
1592 | CALL PR8X8 |
||
1593 | POP AF |
||
1594 | PR8X8 |
||
1595 | PUSH HL |
||
1596 | ADD A,A |
||
1597 | ADD A,A |
||
1598 | ADD A,A |
||
1599 | OR #80 |
||
1600 | LD H,61 |
||
1601 | CP 80+#80 |
||
1602 | jr C,$+5 |
||
1603 | SUB 72+#80 |
||
1604 | INC H |
||
1605 | LD L,A |
||
1606 | PR8X80 INC L |
||
1607 | LD A,(HL) |
||
1608 | ADD A,A,A,A |
||
1609 | LD B,A |
||
1610 | DUP 5 |
||
1611 | SBC A,A |
||
1612 | LD (DE),A |
||
1613 | INC E |
||
1614 | SLA B |
||
1615 | EDUP |
||
1616 | SBC A,A |
||
1617 | LD (DE),A |
||
1618 | LD A,E |
||
1619 | ADD A,#1B |
||
1620 | LD E,A |
||
1621 | jr NC,PR8X80 |
||
1622 | ADD A,#48 |
||
1623 | LD E,A |
||
1624 | POP HL |
||
1625 | RET |
||
1626 | IF nastr |
||
1627 | SETS |
||
1628 | DW SET1 |
||
1629 | DW SET2 |
||
1630 | DW SETA |
||
1631 | DW SETB |
||
1632 | DW SETC |
||
1633 | DW SETD |
||
1634 | DW SETE |
||
1635 | DW SETF |
||
1636 | DW SETG |
||
1637 | DW SETH |
||
1638 | DW SETI |
||
1639 | DW SETJ |
||
1640 | DW SETK |
||
1641 | DW SETL |
||
1642 | DW SETM |
||
1643 | DW SETN |
||
1644 | DW SETO |
||
1645 | |||
289 | dimkam | 1646 | ;DISPLAY $ |
92 | DimkaM | 1647 | SETSlen=$-SETS |
1648 | ENDIF |
||
1649 | ;ENT |
||
1650 | |||
94 | alone | 1651 | ;GO |
1652 | ; JP RELOAD |
||
92 | DimkaM | 1653 | |
99 | alone | 1654 | MAX=0x8100;-Konez-#200-svbfsz/256<8 |
344 | alone | 1655 | ;-(MAX+pakto/8*9)/256<8,fastWR:сожрёт окно |
1656 | pak9=-MAX;продолж-е LZ данных |
||
92 | DimkaM | 1657 | fout=-MAX-#200-svbfsz |
344 | alone | 1658 | ;первые 2сек.сохраняются в посл.очередь |
1659 | ;чтобы успеть изменить paklen,CRC |
||
99 | alone | 1660 | ;s8=fout |
1661 | ;dirsec=fout+#200 |
||
1662 | ;DISPLAY /T,Konez,/T,MAX |