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/DosName.asm'
include 'API/Read.asm' include 'API/Read.asm'
include 'API/Write.asm' include 'API/Write.asm'
include 'API/Environ.ASM'
;R09 ;R09

View File

@ -6,7 +6,7 @@
;--------------------------------------------------------------- ;---------------------------------------------------------------
;Rev Date Name Description ;Rev Date Name Description
;--------------------------------------------------------------- ;---------------------------------------------------------------
;R01 16-11-1999 DNS ERROR READING FAT CHAIN ;
;--------------------------------------------------------------- ;---------------------------------------------------------------
;FMS DB FMCOUNT ;FMS DB FMCOUNT
@ -176,147 +176,4 @@ MOVE_CP:
LD D,(IY+_sFM.F_POSITION+3) LD D,(IY+_sFM.F_POSITION+3)
SBC HL,DE SBC HL,DE
RET 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 "DOS_FM.ASM"
INCLUDE "EXECUTE.ASM" INCLUDE "EXECUTE.ASM"
INCLUDE "ENVIRON.ASM"
INCLUDE "INTMOUSE.ASM" INCLUDE "INTMOUSE.ASM"
INCLUDE "Procedures.asm" INCLUDE "Procedures.asm"

View File

@ -9,6 +9,7 @@
;--------------------------------------------------------------- ;---------------------------------------------------------------
;Rev Date Name Description ;Rev Date Name Description
;--------------------------------------------------------------- ;---------------------------------------------------------------
;RY01 16-11-1999 DNS ERROR READING FAT CHAIN
;RX01 10-02-1999 DNS UPGRADE FAT CASH ;RX01 10-02-1999 DNS UPGRADE FAT CASH
;--------------------------------------------------------------- ;---------------------------------------------------------------
@ -624,13 +625,13 @@ BLOK_RD: PUSH BC
;JR NZ,BLOKRD2 ;JR NZ,BLOKRD2
PUSH BC PUSH BC
JR Z,.ECL2 JR Z,.ECL2
;JP ECL2 ;R01 JR BLOKRD0 ;JP ECL2 ;RY01 JR BLOKRD0
_GetSavedCluster .enter_loop1 _GetSavedCluster .enter_loop1
; ;
.loop1: PUSH BC .loop1: PUSH BC
CALL R_F_FAT CALL R_F_FAT
POP BC POP BC
JR C,.ECL2 ;R01 JR C,.ECL2 ;RY01
EX DE,HL EX DE,HL
DEC BC DEC BC
.enter_loop1: .enter_loop1:
@ -698,7 +699,7 @@ BLOK_RD: PUSH BC
PUSH BC PUSH BC
CALL R_F_FAT CALL R_F_FAT
POP BC POP BC
JR C,.ECL1 ;R01? JR C,.ECL1 ;RY01
EX DE,HL EX DE,HL
PUSH HL PUSH HL
PUSH BC PUSH BC

View File

@ -188,4 +188,150 @@ HEX2BCD:
OR B OR B
RET 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