From c0f126a95cb39f52b478025b03058373e2b44fe1 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sat, 16 Dec 2023 04:33:15 +1000 Subject: [PATCH] ... --- DSS/API.asm | 3 + DSS/{ENVIRON.ASM => API/Environ.asm} | 0 DSS/DOS_FM.ASM | 145 +------------------------- DSS/DSS-MAIN.ASM | 1 - DSS/FS/FAT/FAT12_16.asm | 7 +- DSS/Procedures.asm | 146 +++++++++++++++++++++++++++ DSS/build.txt | 2 +- 7 files changed, 155 insertions(+), 149 deletions(-) rename DSS/{ENVIRON.ASM => API/Environ.asm} (100%) diff --git a/DSS/API.asm b/DSS/API.asm index 4d4695e..e30b22f 100644 --- a/DSS/API.asm +++ b/DSS/API.asm @@ -57,6 +57,9 @@ include 'API/DosName.asm' include 'API/Read.asm' include 'API/Write.asm' + include 'API/Environ.ASM' + + ;R09 diff --git a/DSS/ENVIRON.ASM b/DSS/API/Environ.asm similarity index 100% rename from DSS/ENVIRON.ASM rename to DSS/API/Environ.asm diff --git a/DSS/DOS_FM.ASM b/DSS/DOS_FM.ASM index b6e4855..82d57b4 100644 --- a/DSS/DOS_FM.ASM +++ b/DSS/DOS_FM.ASM @@ -6,7 +6,7 @@ ;--------------------------------------------------------------- ;Rev Date Name Description ;--------------------------------------------------------------- -;R01 16-11-1999 DNS ERROR READING FAT CHAIN +; ;--------------------------------------------------------------- ;FMS DB FMCOUNT @@ -176,147 +176,4 @@ MOVE_CP: LD D,(IY+_sFM.F_POSITION+3) SBC HL,DE RET - - -; HL:DE / C => DE:IX HL-OSTATOK (DE:BC.HL). Легко переделать под HL:DE / A => HL:DE.A -DIV_for_SPC: - LD A,C - DEC A - JR Z,.exit -; - AND E - LD B,A ; остаток - LD A,C - RRCA -; -.loop: SRL H : RR L - RR D : RR E - RRCA - JP NC,.loop - LD A,B -; -.exit: LD XH,D - LD XL,E - EX DE,HL - LD H,0 - LD L,A - RET -; DIV32: LD A,#FF -; LD B,E -; .loop: SRL C -; JR C,.exitLoop -; SRL H : RR L : RR D : RR E : SLA A -; JP .loop -; .exitLoop: -; CPL -; AND B -; LD XH,D -; LD XL,E -; EX DE,HL -; LD H,0 -; LD L,A -; RET -/* - DEFINE NEW_DIV 1 - -DIV32: LD XH,D - LD XL,E - - IFN NEW_DIV - EX DE,HL - LD HL,0 - LD A,#20 -DIV001: ADD IX,IX - EX DE,HL - ADC HL,HL - EX DE,HL - ADC HL,HL - SBC HL,BC - JR NC,DIV002 - ADD HL,BC - DEC A - JR NZ,DIV001 - RET -DIV002: INC IX - DEC A - JR NZ,DIV001 - RET - ELSE - - -div32_16: -;HLIX/BC -> HLIX remainder DE -;174+4*div32_16_sub8 -;min: 2186cc -;max: 2794cc -;avg: 2466cc -;61 bytes - ex de,hl ; 4 - -; Negate BC to allow add instead of sbc - xor a ; 4 -; Need to set HL to 0 anyways, so save 2cc and a byte - ld h,a ; 4 - ld l,a ; 4 - sub c ; 4 - ld c,a ; 4 - sbc a,a ; 4 - sub b ; 4 - ld b,a ; 4 - - - ld a,d ; 4 - call div32_16_sub8 ; 17 - rla ; 4 - ld d,a ; 4 - - ld a,e ; 4 - call div32_16_sub8 ; 17 - rla ; 4 - ld e,a ; 4 - - ld a,ixh ; 8 - call div32_16_sub8 ; 17 - rla ; 4 - ld ixh,a ; 8 - - ld a,ixl ; 8 - call div32_16_sub8 ; 17 - rla ; 4 - ld ixl,a ; 8 - - ;ex de,hl ; 4 - ret ; 10 - -div32_16_sub8: -;119+8*div32_16_sub -;min: 503cc -;max: 655cc -;avg: 573cc - call 1F -1: -;17+2(17+2(div32_16_sub))) - call 1F -1: -;17+2(div32_16_sub) - call div32_16_sub -div32_16_sub: -;48+{8,0+{0,19}} -;min: 48cc -;max: 67cc -;avg: 56.75cc - rla ; 4 - adc hl,hl ; 15 - jr c,1F ;12/7 - add hl,bc ; 11 - ret c ;11/5 - sbc hl,bc ; 15 - ret ; 10 -1: - add hl,bc ; 11 - scf ; 4 - ret ; 10 - - ENDIF -*/ ; \ No newline at end of file diff --git a/DSS/DSS-MAIN.ASM b/DSS/DSS-MAIN.ASM index 4a92460..896d862 100644 --- a/DSS/DSS-MAIN.ASM +++ b/DSS/DSS-MAIN.ASM @@ -443,7 +443,6 @@ ADRST10: ;DS 512 ;,0 INCLUDE "DOS_FM.ASM" INCLUDE "EXECUTE.ASM" - INCLUDE "ENVIRON.ASM" INCLUDE "INTMOUSE.ASM" INCLUDE "Procedures.asm" diff --git a/DSS/FS/FAT/FAT12_16.asm b/DSS/FS/FAT/FAT12_16.asm index 1ce58f4..2541602 100644 --- a/DSS/FS/FAT/FAT12_16.asm +++ b/DSS/FS/FAT/FAT12_16.asm @@ -9,6 +9,7 @@ ;--------------------------------------------------------------- ;Rev Date Name Description ;--------------------------------------------------------------- +;RY01 16-11-1999 DNS ERROR READING FAT CHAIN ;RX01 10-02-1999 DNS UPGRADE FAT CASH ;--------------------------------------------------------------- @@ -624,13 +625,13 @@ BLOK_RD: PUSH BC ;JR NZ,BLOKRD2 PUSH BC JR Z,.ECL2 - ;JP ECL2 ;R01 JR BLOKRD0 + ;JP ECL2 ;RY01 JR BLOKRD0 _GetSavedCluster .enter_loop1 ; .loop1: PUSH BC CALL R_F_FAT POP BC - JR C,.ECL2 ;R01 + JR C,.ECL2 ;RY01 EX DE,HL DEC BC .enter_loop1: @@ -698,7 +699,7 @@ BLOK_RD: PUSH BC PUSH BC CALL R_F_FAT POP BC - JR C,.ECL1 ;R01? + JR C,.ECL1 ;RY01 EX DE,HL PUSH HL PUSH BC diff --git a/DSS/Procedures.asm b/DSS/Procedures.asm index dc14eb1..0760807 100644 --- a/DSS/Procedures.asm +++ b/DSS/Procedures.asm @@ -188,4 +188,150 @@ HEX2BCD: OR B RET ;----------------------------------------------------------------------; +; + +; HL:DE / C => DE:IX HL-OSTATOK (DE:BC.HL). Легко переделать под HL:DE / A => HL:DE.A +;----------------------------------------------------------------------; +DIV_for_SPC: + LD A,C + DEC A + JR Z,.exit +; + AND E + LD B,A ; остаток + LD A,C + RRCA +; +.loop: SRL H : RR L + RR D : RR E + RRCA + JP NC,.loop + LD A,B +; +.exit: LD XH,D + LD XL,E + EX DE,HL + LD H,0 + LD L,A + RET +;----------------------------------------------------------------------; + +; DIV32: LD A,#FF +; LD B,E +; .loop: SRL C +; JR C,.exitLoop +; SRL H : RR L : RR D : RR E : SLA A +; JP .loop +; .exitLoop: +; CPL +; AND B +; LD XH,D +; LD XL,E +; EX DE,HL +; LD H,0 +; LD L,A +; RET +/* + DEFINE NEW_DIV 1 + +DIV32: LD XH,D + LD XL,E + + IFN NEW_DIV + EX DE,HL + LD HL,0 + LD A,#20 +DIV001: ADD IX,IX + EX DE,HL + ADC HL,HL + EX DE,HL + ADC HL,HL + SBC HL,BC + JR NC,DIV002 + ADD HL,BC + DEC A + JR NZ,DIV001 + RET +DIV002: INC IX + DEC A + JR NZ,DIV001 + RET + ELSE + + +div32_16: +;HLIX/BC -> HLIX remainder DE +;174+4*div32_16_sub8 +;min: 2186cc +;max: 2794cc +;avg: 2466cc +;61 bytes + ex de,hl ; 4 + +; Negate BC to allow add instead of sbc + xor a ; 4 +; Need to set HL to 0 anyways, so save 2cc and a byte + ld h,a ; 4 + ld l,a ; 4 + sub c ; 4 + ld c,a ; 4 + sbc a,a ; 4 + sub b ; 4 + ld b,a ; 4 + + + ld a,d ; 4 + call div32_16_sub8 ; 17 + rla ; 4 + ld d,a ; 4 + + ld a,e ; 4 + call div32_16_sub8 ; 17 + rla ; 4 + ld e,a ; 4 + + ld a,ixh ; 8 + call div32_16_sub8 ; 17 + rla ; 4 + ld ixh,a ; 8 + + ld a,ixl ; 8 + call div32_16_sub8 ; 17 + rla ; 4 + ld ixl,a ; 8 + + ;ex de,hl ; 4 + ret ; 10 + +div32_16_sub8: +;119+8*div32_16_sub +;min: 503cc +;max: 655cc +;avg: 573cc + call 1F +1: +;17+2(17+2(div32_16_sub))) + call 1F +1: +;17+2(div32_16_sub) + call div32_16_sub +div32_16_sub: +;48+{8,0+{0,19}} +;min: 48cc +;max: 67cc +;avg: 56.75cc + rla ; 4 + adc hl,hl ; 15 + jr c,1F ;12/7 + add hl,bc ; 11 + ret c ;11/5 + sbc hl,bc ; 15 + ret ; 10 +1: + add hl,bc ; 11 + scf ; 4 + ret ; 10 + + ENDIF +*/ ; \ No newline at end of file diff --git a/DSS/build.txt b/DSS/build.txt index 4c88dcf..7a4ca1f 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -805 \ No newline at end of file +806 \ No newline at end of file