-bug in SCANDRV

-bug in NSECTOR
-bug in SYS.EXE (boot.asm)
This commit is contained in:
Anatoliy Belyanskiy 2023-09-18 02:30:17 +10:00
parent 615d9cb2e2
commit 851c215879
5 changed files with 45 additions and 22 deletions

View File

@ -60,12 +60,12 @@ BEGIN: in a,(SLOT3)
ld c,0 ; ã§­ âì ¢¥àá¨î „Ž‘ ld c,0 ; ã§­ âì ¢¥àá¨î „Ž‘
rst 10h rst 10h
ex de,hl ; hl=⥪. ¢¥àá¨ï ex de,hl ; hl=⥪. ¢¥àá¨ï
ld de,013Ch ; 1.60 d=¢¥àá¨ï, e=¬®¤¨ä¨ª æ¨ï, bc - ­®¬¥à ᡮન. de = #013E, bc = #0064 dos ver 1.62.100 ld de,#013C ; 1.60 d=¢¥àá¨ï, e=¬®¤¨ä¨ª æ¨ï, bc - ­®¬¥à ᡮન. de = #013E, bc = #0064 dos ver 1.62.100
and a and a
sbc hl,de sbc hl,de
jr nc,version_ok jr nc,version_ok
pop hl pop hl
ld a,9 ; ¨­¤¥ªá áâப¨ "Error: Need DSS version 1.60..." ld a,11 ; ¨­¤¥ªá áâப¨ "Error: Need DSS version 1.60..."
call print_string call print_string
ld a,-1 ld a,-1
jp exit jp exit

View File

@ -918,7 +918,7 @@ WOV3: PUSH HL
; LD DE,#0000 ; LD DE,#0000
; ADC HL,DE ; ADC HL,DE
; RET ; RET
///////////////////////////////////// ////////////// NEW //////////////////
; in: HL - CLUSTER ; in: HL - CLUSTER
; out: HL:IX - SECTOR ; out: HL:IX - SECTOR
NSECTOR: DEC HL NSECTOR: DEC HL
@ -931,16 +931,16 @@ NSECTOR: DEC HL
RRA RRA
.loop: ADD HL,HL .loop: ADD HL,HL
RL E RL E
RL D ; RL D
RRCA RRA
JP NC,.loop JP NC,.loop
; ;
.skip: EX DE,HL .skip: EX DE,HL
LD XL,E LD XL,E
LD XH,D LD XH,D
LD DE,(FatBuffer.DAT_FRM) ;first data sector LD DE,(FatBuffer.DAT_FRM) ;first data sector
XOR A
ADD IX,DE ADD IX,DE
; A=0
LD D,A LD D,A
LD E,A LD E,A
ADC HL,DE ADC HL,DE

View File

@ -239,10 +239,11 @@ RD_BPB: LD C,SLOT3
LD H,(IY+_sBOOT_SEC.RESERVE+1) LD H,(IY+_sBOOT_SEC.RESERVE+1)
; ;
; LD E,(IY+#1C) ;Hidden sec ; LD E,(IY+_sBOOT_SEC.HIDDEN) ;Hidden sec
; LD D,(IY+#1D) ; LD D,(IY+_sBOOT_SEC.HIDDEN+1)
; ADD HL,DE ; ADD HL,DE
; LD (FatBuffer.FAT_FRM),HL ; first sector FAT
;LD (FatBuffer.FAT_FRM),HL ; first sector FAT
LD (FatBuffer.FAT1_XX),HL ; first sector FAT #1 LD (FatBuffer.FAT1_XX),HL ; first sector FAT #1
LD (FatBuffer.FAT2_XX),HL LD (FatBuffer.FAT2_XX),HL
@ -319,8 +320,7 @@ RD_BPB: LD C,SLOT3
LD (FatBuffer.CLU_LEN),HL LD (FatBuffer.CLU_LEN),HL
EX DE,HL EX DE,HL
LD HL,#3FFF ;!TODO FATcacheSize LD HL,#3FFF ;!TODO FATcacheSize
;XOR A XOR A
; A = 0
;NEXTAD4 ;!FIXIT ®¯â¨¬¨§¨à®¢ âì ª®£¤  ¯®­ ¤®¡¨âáï ;NEXTAD4 ;!FIXIT ®¯â¨¬¨§¨à®¢ âì ª®£¤  ¯®­ ¤®¡¨âáï
.loop4: INC A .loop4: INC A
JP Z,DOS_X_Error.UnknownBPB JP Z,DOS_X_Error.UnknownBPB
@ -376,8 +376,8 @@ RD_BPB: LD C,SLOT3
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
LD DE,(FatBuffer.DAT_FRM) LD DE,(FatBuffer.DAT_FRM)
; LD E,(IY+#1C) ;Hidden sec ; LD E,(IY+_sBOOT_SEC.HIDDEN) ;Hidden sec
; LD D,(IY+#1D) ; LD D,(IY+_sBOOT_SEC.HIDDEN+1)
; AND A ; AND A
; SBC HL,DE ; SBC HL,DE
; EX DE,HL ; EX DE,HL
@ -572,6 +572,9 @@ BACK_CUR_PATH:
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
SCANDRV: SCANDRV:
;1 [-----------] [-----------] [-----------] [-----------] [-----------] ;1 [-----------] [-----------] [-----------] [-----------] [-----------]
; LD A,(LDRIVE)
; LD (.old_ldrive),A
;
CALL GETBOOT CALL GETBOOT
LD (.old_letter),A ; bootdisk Log.number LD (.old_letter),A ; bootdisk Log.number
; [-----------] ; [-----------]
@ -603,6 +606,9 @@ SCANDRV:
CALL SETBOOT CALL SETBOOT
JR C,.ERROR_BOOTDRV_DIES JR C,.ERROR_BOOTDRV_DIES
LD (.new_letter),A LD (.new_letter),A
;
LD A,(.old_letter)
LD (BOOTDRV),A
; ;
;5 [-----------] [-----------] [-----------] [-----------] [-----------] ;5 [-----------] [-----------] [-----------] [-----------] [-----------]
@ -641,14 +647,31 @@ SCANDRV:
EX DE,HL EX DE,HL
LDDR LDDR
; ¯à®¢¥à塞, ­¥ 㢥«¨ç¨«®áì «¨ §­ ç¥­¨¥ LDRIVE ; ¯à®¢¥à塞, ­¥ 㢥«¨ç¨«®áì «¨ §­ ç¥­¨¥ LDRIVE
LD HL,.old_letter ;!TEST
LD A,(LDRIVE) LD HL,.old_letter
CP (HL) LD A,(LDRIVE)
JR NC,.no_change_LDRIVE CP (HL)
LD A,(HL) JR NC,.no_change_LDRIVE
LD (LDRIVE),A LD A,(HL)
LD (LDRIVE),A
;
; .old_ldrive+1:
;LD L,0
;LD A,(LDRIVE)
;CP L
;JR NC,.no_change_LDRIVE
;LD A,L
;LD (LDRIVE),A
;
.no_change_LDRIVE: .no_change_LDRIVE:
; ;
; DEC A
; LD C,Dss.DskInfo
; RST ToDSS
; LD A,(BOOTDRV)
; LD C,Dss.ChDisk
; RST ToDSS
;;;;; ;;;;;
.restore_page+1: .restore_page+1:
LD A,0 LD A,0

View File

@ -1 +1 @@
280 297

View File

@ -4,7 +4,7 @@
; ;
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権. DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権.
DEFINE COMPILE_UNUSED_CODE 0 DEFINE COMPILE_UNUSED_CODE 1
; ;
; ;