This commit is contained in:
Anatoliy Belyanskiy 2023-12-16 04:33:15 +10:00
parent 2a6d817a9d
commit c0f126a95c
7 changed files with 155 additions and 149 deletions

View File

@ -57,6 +57,9 @@
include 'API/DosName.asm'
include 'API/Read.asm'
include 'API/Write.asm'
include 'API/Environ.ASM'
;R09

View File

@ -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
*/
;

View File

@ -443,7 +443,6 @@ ADRST10: ;DS 512 ;,0
INCLUDE "DOS_FM.ASM"
INCLUDE "EXECUTE.ASM"
INCLUDE "ENVIRON.ASM"
INCLUDE "INTMOUSE.ASM"
INCLUDE "Procedures.asm"

View File

@ -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

View File

@ -189,3 +189,149 @@ HEX2BCD:
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
*/
;

View File

@ -1 +1 @@
805
806