лучше бы я этого не делал

This commit is contained in:
Tolik 2025-04-18 05:46:36 +10:00
parent 1430dec045
commit fb13b0231b
16 changed files with 108 additions and 193 deletions

View File

@ -59,7 +59,7 @@
include 'API/Open.asm'
include 'API/Close.asm'
include 'API/Find.asm'
include 'API/ChnDisk.asm'
include 'API/ChDisk.asm'
include 'API/CurrDir.asm'
include 'API/Time.asm'
include 'API/GetDateTime.asm'
@ -88,8 +88,8 @@
;R09
;„ã¡«ì - CHNDISK = OPENDSK
;CHNDISK:
;„ã¡«ì - CHDISK = OPENDSK
;CHDISK:
; PUSH AF
; LD C,Dss.DRV.Open
; RST ToDSS.DRV

24
DSS/API/ChDisk.asm Normal file
View File

@ -0,0 +1,24 @@
////////////////////////////////////////////////////////////////////////
;
;
////////////////////////////////////////////////////////////////////////
CHDISK_FN: CALL CHDISK
RET C
PUSH AF
CALL DIR_PATH_CHANGE.FullCurrent
POP AF
RET
CHDISK: ;[x] ¡®«¥¥ ª®à४⭠ï ᬥ­  ¤¨áª 
CALL OPENDSK
;
;R010
RET C
LD HL,CORE_BUFFERS.WorkDirectory
LD (HL),0
PUSH AF
CALL OPENDIR
POP BC
RET C
LD A,B
RET
;

View File

@ -2,13 +2,13 @@
;
;
////////////////////////////////////////////////////////////////////////
CHNDISK_FN: CALL CHNDISK
CHDISK_FN: CALL CHDISK
RET C
PUSH AF
CALL DIR_PATH_CHANGE.FullCurrent
POP AF
RET
CHNDISK: ;[x] ¡®«¥¥ ª®à४⭠ï ᬥ­  ¤¨áª 
CHDISK: ;[x] ¡®«¥¥ ª®à४⭠ï ᬥ­  ¤¨áª 
CALL OPENDSK
;
;R010

View File

@ -103,7 +103,6 @@ EXEC_1: ;LD (CMDLINE),HL
CALL MASK
RET C
CALL TST_EXT
;LD A,DSS_Error.sys.FILE_NOT_FOUND
RET C
_mINCTASK ;R08
CALL OPEN_FN.FILE
@ -164,18 +163,12 @@ EXEC02: LD (EXE_FM),A
LD A,DSS_Error.sys.INVALID_EXE
SCF
JP NZ,ERREXE
;!TEST
;LD A,(CORE_BUFFERS.EXEBUFF.VERSION)
;OR A
;LD A,DSS_Error.sys.UNKNOWN_EXE
;SCF
;JP NZ,ERREXE
;
LD A,MINIMUM_EXE_VERSION
CP (IX + _sEXE_HEADER.VERSION)
LD A,DSS_Error.sys.UNKNOWN_EXE
JP C,ERREXE
;
;
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER)
LD A,E
OR D

View File

@ -137,7 +137,7 @@ DISKINF: LD C,B
JR Z,.CheckFreeSpace
;
.CustomDisk: PUSH BC
CALL CHNDISK ;R06
CALL CHDISK ;R06
POP BC
RET C
;

View File

@ -108,7 +108,7 @@ SetPath_GetName:
INC HL
INC HL
PUSH HL
CALL CHNDISK
CALL CHDISK
;CALL OPENDSK
POP HL
RET C
@ -164,9 +164,9 @@ SetPath_GetName:
; SUB #20
; .next: SUB 'A'
; PUSH HL
; ;!TEST CHNDISK OPENDSK
; ;!TEST CHDISK OPENDSK
; ;CALL OPENDSK
; CALL CHNDISK
; CALL CHDISK
; ;
; POP HL
; RET C
@ -220,19 +220,24 @@ OPENDSK: ;!TEST DRV.Open
AND A
RET
; !FIXIT ª®áâë«ì ¤«ï Flex Navigator ; [ ] media change
.error: CP DSS_Error.sys.INVALID_DRIVE
.error: CALL .error_convert
LD A,C
SCF
RET
;
.error_convert: CP DSS_Error.drv.INVALID_DRIVE
LD C,DSS_Error.sys.INVALID_DRIVE
RET Z
;
CP DSS_Error.sys.MEDIA_CHANGED
SCF
CP DSS_Error.drv.ATAPI.UnitAttention
LD C,DSS_Error.sys.MEDIA_CHANGED
RET Z
;
CP DSS_Error.sys.UNKNOWN_FORMAT
SCF
CP DSS_Error.drv.UNKNOWN_FORMAT
LD C,DSS_Error.sys.UNKNOWN_FORMAT
RET Z
;
LD A,DSS_Error.sys.NOT_READY
LD C,DSS_Error.sys.NOT_READY
RET
;
;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed

View File

@ -34,7 +34,7 @@ A0000: JP RST_00
;
RST_00:
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;
@ -83,7 +83,7 @@ A0020: JP DRV_PAGE.RST_20
;
DRV_PAGE.RST_20:
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;
@ -98,7 +98,7 @@ A0028: JP DRV_PAGE.RST_28
;
DRV_PAGE.RST_28:
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;
@ -195,16 +195,19 @@ A0066: JP DRV_PAGE.NMI ;
////////////////////////////////////////////////////////////////////////
; <[DRIVE PAGE SWITCH]> ;
BLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
PORTAL.out_DRV: PUSH BC ;
PORTAL.out_DRV: PUSH BC
.RETBANK+2: LD BC,SLOT0 + 0*256; ;!!!!! ReScnDRV ¨á¯®«ì§ã¥â íâ® §­ ç¥­¨¥
.switch: OUT (C),B ;
.switch: OUT (C),B
ASSERT $!=84,'-> Portal error!';
;Entry point from DSS main page
LD (.RETBANK),A ;
POP BC ;
POP AF ;
LD (.RETBANK),A
POP BC
POP AF
.ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK
JP PORTAL.out_DRV ;
JR NC,PORTAL.out_DRV
XOR DSS_Error.DRV_MASK
SCF
JP PORTAL.out_DRV
////////////////////////////////////////////////////////////////////////

View File

@ -338,7 +338,7 @@ GO_ZERO EQU #0000
DSS_API_TABLE: ;DS 512 ;,0
;...............................................[LOW ADDRESS ]:
; 0 1 2 3 4 5 6 7 8 9 DEC HEX
DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
DB low F_START, low CHDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST_FN,low F_NEXT, low MKDIR.B, low RMDIR, low CHDIR_FN ; 2 14..1D
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
@ -367,7 +367,7 @@ DSS_API_TABLE: ;DS 512 ;,0
;[ ] R09
ENDIF
;...............................................[HIGH ADDRESS]:
DB high F_START, high CHNDISK_FN,high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
DB high F_START, high CHDISK_FN, high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST_FN,high F_NEXT, high MKDIR.B,high RMDIR, high CHDIR_FN
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS

View File

@ -1 +1 @@
31
33

View File

@ -276,46 +276,6 @@ Find_Record:
RET
;-----------------------[]
;-----------------------[]
; ERROR_BOOTDRV_DIES:
; DI
; LD E,1
; LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
; RST ToBIOS
; ;
; LD HL,#2050
; LD DE,0
; LD BC,256*COLORS.CGA.PAPER.BLUE + BIOS.LP_CLS_WIN
; RST ToBIOS
; ;
; LD A,1
; OUT (SCREEN_SWITCH),A ; set scr-2
; ;
; LD HL,.ERROR_MSG
; LD DE,#A000
; LD BC,.ERROR_MSG.size
; LD A,C
; LDIR
; ;
; LD DE,16*256 + (80-.ERROR_MSG.size)/2 ;X=0, Y=16
; LD C,BIOS.LP_SET_PLACE
; RST ToBIOS
; ;
; LD HL,#A000
; LD DE,0*256 + COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE
; LD B,A
; LD C,BIOS.LP_PRINT_LINE3
; RST ToBIOS
; ;
; .loop: DI
; HALT
; JR .loop
; ;
; .ERROR_MSG: DZ "Kernel panic! Boot disk lost. Press Ctrl+Alt+Del or RESET."
; .ERROR_MSG.size EQU $-.ERROR_MSG
;-----------------------[]
;-----------------------[]
; <20>… ƒ<>Ž•€œ HL!
;  . ¥á«¨ ¤à ©¢ ¥áâì ¢ ­®¢®© ¨ áâ à®©, â® § â¨à ¥¬ ¢ ­®¢®©

View File

@ -210,7 +210,7 @@ INTDISK:
RET
NODEV: POP BC
POP HL
LD A,DSS_Error.drv.INVALID_DRIVE
LD A,BIOS.Error.BadNumber
SCF
RET

View File

@ -207,7 +207,7 @@ API_TABLE: INC C
DEC C
JP Z,WriteLong ; [ ] ; c=11 Write Long
;
.Reserved: LD A,DSS_Error.drv.INVALID_COMMAND
.Reserved: LD A,BIOS.Error.InvalidSubFunction
SCF
RET
@ -279,7 +279,7 @@ Init: PUSH IY
DJNZ .NX_DVCI
RET
;
.check_error: XOR BIOS.Error.BadNumber
.check_error: XOR BIOS.Error.BadNumber ; â ª ­ ¤®
RET NZ
SCF
RET
@ -294,34 +294,6 @@ Init: PUSH IY
;+10 WORD Sector Size
;+12 BYTE Removable Media Byte flags
;+13_15 FREE
; SelectDrive: PUSH DE
; PUSH HL
; ;
; LD L,A
; ;
; LOGDRV_ENTRY_FIND LOGDRV
; ;
; ; [ ] custorm sector size
; CALL CHECK_IDE_SECTOR_SIZE
; RLA
; ;
; ;
; LD E,(IY+LOGDRV.SECTOR_OFFSET)
; LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
; ADD IX,DE
; LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
; LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
; POP HL
; ADC HL,DE
; ; [ ] custom sector size
; ;JR C,.exit
; RRA
; ;
; .exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
; POP DE
; RET NC
; LD A,DSS_Error.drv.UNKNOWN_FORMAT
; RET
;
@ -338,30 +310,16 @@ SelectDrive: PUSH DE
;
LD L,A
ADD 0 - DSS_MAX_DRIVES_AMOUNT - 1
LD A,DSS_Error.sys.INVALID_DRIVE
LD A,BIOS.Error.UnknownDevice
JR C,.error_pop
;
LOGDRV_ENTRY_FIND LOGDRV
;
; ; [ ] custom sector size
; CALL CHECK_IDE_SECTOR_SIZE
; LD A,DSS_Error.sys.UNKNOWN_FORMAT
; JR C,.error_pop
; ;
; ;
; LD E,(IY+LOGDRV.SECTOR_OFFSET)
; LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
; ADD IX,DE
; LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
; LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
POP HL
CALL .get_data
JR C,.error_pop2
;
POP DE
; LD A,DSS_Error.sys.SECTOR_NOT_FOUND
; RET C
;
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
RET
;
@ -371,7 +329,7 @@ SelectDrive: PUSH DE
;
.get_data: ; [ ] custom sector size
CALL CHECK_IDE_SECTOR_SIZE
LD A,DSS_Error.sys.UNKNOWN_FORMAT
LD A,BIOS.Error.UnknownDevice
RET C
;
LD E,(IY+LOGDRV.SECTOR_OFFSET)
@ -380,7 +338,7 @@ SelectDrive: PUSH DE
LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
ADC HL,DE
LD A,DSS_Error.sys.SECTOR_NOT_FOUND
LD A,BIOS.Error.SectorNotFound
RET
@ -400,7 +358,7 @@ GenIOCTL: BIT 7,B
JR Z,.error ;ReadTrack
DEC B
JR Z,TestTRK
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;
@ -412,11 +370,11 @@ GenIOCTL: BIT 7,B
JR Z,.error ;WriteTrack
DEC B
JR Z,.error
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;
.error: LD A,DSS_Error.drv.GENERAL_FAILURE
.error: LD A,BIOS.Error.Failure
SCF
RET
@ -459,7 +417,7 @@ GetParams: EX DE,HL
AND A
SBC HL,BC
LD L,A
LD A,DSS_Error.drv.GENERAL_FAILURE
LD A,BIOS.Error.Failure
SCF
RET NZ
;
@ -474,22 +432,13 @@ GetParams: EX DE,HL
RST ToBIOS
POP IY
JR NC,.next
;
;CP BIOS.Error.ATAPI.NotReady
;SCF
;LD A,DSS_Error.drv.NOT_READY
;JR Z,.error
;LD A,DSS_Error.drv.INVALID_DRIVE
;JR .error
;
CP BIOS.Error.BadNumber
SCF
LD A,DSS_Error.drv.INVALID_DRIVE
JR Z,.error
LD A,DSS_Error.drv.NOT_READY
LD A,BIOS.Error.NotReady
JR .error
;
; [ ] media change - ã¡à âì ;!FIXIT
.next: EX AF,AF
JR NC,.NoMediaChange
@ -576,7 +525,7 @@ Open: CALL MediaCheck
;
INC A
RET NZ
LD A,DSS_Error.sys.MEDIA_CHANGED
LD A,BIOS.Error.ATAPI.UnitAttention
SCF
RET
;
@ -587,7 +536,7 @@ MediaCheck: PUSH IY
CALL SelectDrive.NoSector
JR NC,.next_step
;
CP DSS_Error.sys.UNKNOWN_FORMAT
CP BIOS.Error.UnknownDevice
JR NZ,.exit
; A != 0
AND A ; á¡à®á ZF
@ -604,7 +553,15 @@ MediaCheck: PUSH IY
;
CP BIOS.Error.ATAPI.UnitAttention
JR Z,.Reinit
;!FIXIT § £«ã誠/ª®áâë«ì ¨§-§  ¯¥à¥á¥ç¥­¨ï ­®¬¥à®¢ ®è¨¡®ª
POP BC ; <20> « ­á á⥪ 
/*
BIOS.Error.BadNumber
BIOS.Error.Failure
BIOS.Error.Busy
BIOS.Error.ATAPI.TimeOut
*/
;LD A,BIOS.Error.Busy
.exit: SCF
POP IY
RET
@ -626,7 +583,7 @@ MediaCheck: PUSH IY
POP IY
JR NC,.no_errors
;
CP DSS_Error.sys.UNKNOWN_FORMAT
CP BIOS.Error.UnknownDevice
SCF
RET Z
;
@ -669,33 +626,6 @@ GetBPB: ; !FIXIT
LD IX,0
LD B,1
JR Read
; PUSH IY
; PUSH DE
; LD L,A
; ;
; LOGDRV_ENTRY_FIND LOGDRV
; ;
; ; [ ] custorm sector size
; CALL CHECK_IDE_SECTOR_SIZE
; JR C,.error
; ;
; LD E,(IY+LOGDRV.SECTOR_OFFSET)
; LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
; LD L,(IY+LOGDRV.SECTOR_OFFSET+2)
; LD H,(IY+LOGDRV.SECTOR_OFFSET+3)
; LD XL,E
; LD XH,D
; LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
; POP DE
; POP IY
; LD BC,1*256 + BIOS.DRV_READ
; JP ToBIOS
; ;
; .error: POP DE
; POP IY
; LD A,DSS_Error.drv.UNKNOWN_FORMAT
; RET
;HL:IX - SECTOR

View File

@ -162,7 +162,7 @@ API_TABLE: INC C
DEC C
JP Z,Reserved ;#09
;
Reserved: LD A,DSS_Error.drv.INVALID_COMMAND
Reserved: LD A,BIOS.Error.InvalidSubFunction
SCF
RET
@ -189,7 +189,7 @@ Open: PUSH AF
RST ToBIOS
LD DE,-DSS_MAX_SECTOR_SIZE - 1 ; [ ] 15/04/25 ­¥ ¡ã¤¥â ç¨â âì ᥪâ®à ¡®«ìè¥ DSS_MAX_SECTOR_SIZE
; ZF = 0
LD A,DSS_Error.sys.UNKNOWN_FORMAT
LD A,BIOS.Error.UnknownDevice
OR A ; 㡨ࠥ¬ ZF, ¥á«¨ ¥áâì
;
ADD IX,DE ; ¥á«¨ à §¬¥à ᥪâ®à  ¡®«ìè¥, â® ®¡«®¬
@ -279,7 +279,7 @@ GenIOCTL: BIT 7,B
;DEC B
;JP Z,.TestTRK
;
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;
@ -293,7 +293,7 @@ GenIOCTL: BIT 7,B
;DEC B
;JP Z,.FormatTRK
;
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
; ; ;
@ -319,7 +319,7 @@ GenIOCTL: BIT 7,B
SBC HL,BC
JR Z,.next
;
LD A,DSS_Error.drv.GENERAL_FAILURE
LD A,BIOS.Error.Failure
SCF
RET
;
@ -377,7 +377,7 @@ GenIOCTL: BIT 7,B
RET
;
.NONE_FDD: POP BC
LD A,DSS_Error.drv.INVALID_DRIVE
LD A,BIOS.Error.BadNumber
; CF=1
RET
; ; ;

View File

@ -172,7 +172,7 @@
;
;[]===========================================================[ 11]
;
; Errors:
; Errors: ;!FIXIT ⑤<><E291A4><EFBFBD><EFBFBD> Л<>腑⑧<E88591>
; 0 (00h) - NO ERRORS
; 1 (01h) - BAD COMMAND
; 2 (02h) - BAD DRIVE NUMBER
@ -231,7 +231,7 @@ API_TABLE: INC C
DEC C
JP Z,WriteLong ; 11
;
.error: LD A,DSS_Error.drv.INVALID_COMMAND
.error: LD A,BIOS.Error.InvalidSubFunction
SCF
RET
@ -434,7 +434,7 @@ GenIOCTL: BIT 7,B
;JP Z,FRDTRAC
;DEC B
;JP Z,FCHTRAC
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
@ -446,7 +446,7 @@ GenIOCTL: BIT 7,B
;JP Z,FWRTRAC
;DEC B
;JP Z,FFRTRAC
LD A,DSS_Error.drv.INVALID_COMMAND
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
@ -467,7 +467,7 @@ GenIOCTL: BIT 7,B
AND A
SBC HL,BC
LD L,A
LD A,DSS_Error.drv.GENERAL_FAILURE
LD A,BIOS.Error.Failure
SCF
RET NZ
;

View File

@ -1 +1 @@
494
503

@ -1 +1 @@
Subproject commit f533c03f52f53e581c794c1017b7b0d61d39dfbf
Subproject commit 5a36cbee9ca6df7f7c1008fed7f242d0a505bc50