промежуточный

This commit is contained in:
Anatoliy Belyanskiy 2023-07-29 03:28:09 +10:00
parent f4140a5733
commit c50040b715
14 changed files with 637 additions and 421 deletions

View File

@ -27,7 +27,7 @@ CDRIVE EQU #02
DRIVE: _mSYSID DRIVE: _mSYSID
DI DI
LD (DRIVE),A LD (DRIVE),A
LD C,BIOS.EXT_VERSION LD C,BIOS.DRV_VERSION
RST ToBIOS_18 RST ToBIOS_18
LD A,INCORR LD A,INCORR
JR C,FAIL JR C,FAIL
@ -35,7 +35,7 @@ DRIVE: _mSYSID
BIT 7,A BIT 7,A
JR Z,GOOD_DRIVE JR Z,GOOD_DRIVE
EX DE,HL EX DE,HL
LD DE,#0215 ; ¥á«¨ ¢¥àá¨ï ­¨¦¥ 2.21, â® ®è¨¡ª  LD DE,2*256 + 21 ; ¥á«¨ ¢¥àá¨ï ­¨¦¥ 2.21, â® ®è¨¡ª 
SBC HL,DE SBC HL,DE
LD A,INCORR LD A,INCORR
JR C,FAIL JR C,FAIL
@ -47,7 +47,7 @@ GOOD_DRIVE:
LD A,(DRIVE) LD A,(DRIVE)
RST ToBIOS_18 RST ToBIOS_18
JR C,NULL JR C,NULL
JP CONTINU JP CONTINUE
FAIL CALL MESSAGE FAIL CALL MESSAGE
NULL LD A,FAILURE NULL LD A,FAILURE
@ -131,7 +131,7 @@ STARTDO EQU 6
; 0 10 20 30 40 50 60 70 80 ; 0 10 20 30 40 50 60 70 80
MSG0: DB 0 MSG0: DB 0
DB 13,10,"The system has been halted. Press RESET to restart your computer.",13,10,0 DB 13,10,"The system has been halted. Press RESET to restart your computer.",13,10,0
DB 13,10,"You started your computer with a BIOS version that is incompatible with this",13,10,0 DB 13,10,"You started your computer with a BIOS version that is incompatible with this",13,10
DB "version of DSS. Please update BIOS to run this version of DSS.",13,10,0 DB "version of DSS. Please update BIOS to run this version of DSS.",13,10,0
DB "Invalid partition table.",13,10,0 DB "Invalid partition table.",13,10,0
DB "Invalid BOOT sector.",13,10,0 DB "Invalid BOOT sector.",13,10,0
@ -139,7 +139,7 @@ MSG0: DB 0
DB 13,10,"Starting DSS... ",13,10,13,10,0 DB 13,10,"Starting DSS... ",13,10,13,10,0
MSGE DB 0 MSGE DB 0
CONTINU CONTINUE:
LD HL,0 LD HL,0
LD (DISKL),HL LD (DISKL),HL
LD (DISKH),HL LD (DISKH),HL
@ -178,7 +178,7 @@ CONTINU
LD A,(DRIVE) LD A,(DRIVE)
LD C,#00 LD C,#00
RST #10 RST #10
jp c,XFAIL jp c,XFAIL.fail
LD A,STARTDO LD A,STARTDO
CALL DOSMESS CALL DOSMESS
@ -198,7 +198,7 @@ CONTINU
LD A,(DRIVE) LD A,(DRIVE)
LD C,#00 LD C,#00
RST #10 RST #10
jp c,XFAIL jp c,XFAIL.fail
ENDIF ENDIF
LD A,STARTDO LD A,STARTDO
@ -238,14 +238,14 @@ DOSMESS CALL FMESAGE
RST #10 RST #10
RET RET
XFAIL CALL DOSMESS XFAIL: CALL DOSMESS
LD A,FAILURE .fail: LD A,FAILURE
CALL DOSMESS CALL DOSMESS
DI DI
HALT HALT
.halt JR .halt .halt: JR .halt
PART_TB PUSH BC PART_TB: PUSH BC
LD HL,(BOOT+510) LD HL,(BOOT+510)
LD DE,#AA55 LD DE,#AA55
AND A AND A
@ -253,7 +253,7 @@ PART_TB PUSH BC
JR NZ,ERRP JR NZ,ERRP
LD IX,BOOT+#01BE LD IX,BOOT+#01BE
LD B,4 LD B,4
DOSAGA LD A,(IX+4) DOSAGA: LD A,(IX+4)
CP #0E CP #0E
JR Z,YEPDOS JR Z,YEPDOS
CP 6 CP 6
@ -263,14 +263,12 @@ DOSAGA LD A,(IX+4)
CP 1 CP 1
JR Z,YEPDOS JR Z,YEPDOS
LD DE,#10 LD DE,#10
; ®è¨¡ª  ¢ ®à¨£¨­ «¥
; ADD IY,DE
ADD IX,DE ADD IX,DE
DJNZ DOSAGA DJNZ DOSAGA
ERRP LD A,ERRPART ERRP: LD A,ERRPART
JP FAIL JP FAIL
YEPDOS LD E,(IX+08) YEPDOS: LD E,(IX+08)
LD D,(IX+09) LD D,(IX+09)
LD L,(IX+10) LD L,(IX+10)
LD H,(IX+11) LD H,(IX+11)
@ -278,15 +276,15 @@ YEPDOS LD E,(IX+08)
LD XL,E LD XL,E
LD (DISKL),IX LD (DISKL),IX
LD (DISKH),HL LD (DISKH),HL
LD A,(DRIVE)
LD DE,BOOT LD DE,BOOT
LD BC,1*256 + BIOS.DRV_READ LD BC,1*256 + BIOS.DRV_READ
LD A,(DRIVE)
RST ToBIOS_18 RST ToBIOS_18
POP BC POP BC
LD A,C LD A,C
RET RET
SET_PRM PUSH BC SET_PRM: PUSH BC
LD A,B LD A,B
LD C,BIOS.DRV_GET_PAR LD C,BIOS.DRV_GET_PAR
RST ToBIOS_18 RST ToBIOS_18
@ -300,7 +298,7 @@ SET_PRM PUSH BC
LD A,C LD A,C
RET RET
GET_BPB LD IX,#0000 GET_BPB: LD IX,#0000
LD HL,#0000 LD HL,#0000
LD DE,BOOT LD DE,BOOT
LD BC,1*256 + BIOS.DRV_READ LD BC,1*256 + BIOS.DRV_READ
@ -315,7 +313,7 @@ GET_BPB LD IX,#0000
JR NZ,NX1 JR NZ,NX1
CALL PART_TB ;HDD CALL PART_TB ;HDD
RET C RET C
NX1 CP #00 NX1: CP #00
JR NZ,NX2 JR NZ,NX2
CALL SET_PRM ;FDD CALL SET_PRM ;FDD
NX2: LD HL,(BOOT+510) NX2: LD HL,(BOOT+510)
@ -338,7 +336,7 @@ NX2: LD HL,(BOOT+510)
LD E,(IY+_sBOOT_SEC.S_P_F) ;sectors in FAT LD E,(IY+_sBOOT_SEC.S_P_F) ;sectors in FAT
LD D,(IY+_sBOOT_SEC.S_P_F+1) LD D,(IY+_sBOOT_SEC.S_P_F+1)
LD A,(BOOT.FAT_NUM) ;amount FATs LD A,(BOOT.FAT_NUM) ;amount FATs
C_DATA1 ADD HL,DE C_DATA1: ADD HL,DE
DEC A DEC A
JR NZ,C_DATA1 JR NZ,C_DATA1
LD (DIR_FRM),HL ;first sector DIR LD (DIR_FRM),HL ;first sector DIR
@ -362,7 +360,7 @@ C_DATA1 ADD HL,DE
LD B,(IY+_sBOOT_SEC.B_P_S+1) LD B,(IY+_sBOOT_SEC.B_P_S+1)
LD HL,0 LD HL,0
LD A,(BOOT.S_P_C) LD A,(BOOT.S_P_C)
NEXTAD3 NEXTAD3:
ADD HL,BC ;calc. cluster size ADD HL,BC ;calc. cluster size
DEC A DEC A
JR NZ,NEXTAD3 JR NZ,NEXTAD3
@ -371,16 +369,16 @@ NEXTAD3
LD HL,BOOT.ID_FAT LD HL,BOOT.ID_FAT
LD DE,FATMSG LD DE,FATMSG
LD B,3 LD B,3
R_BPBL1 R_BPBL1:
LD A,(DE) LD A,(DE)
CP (HL) CP (HL)
JP NZ,IBMDOS_ JP NZ,IBMDOS_
INC HL INC HL
INC DE INC DE
DJNZ R_BPBL1 DJNZ R_BPBL1
FID LD A,(HL) FID: LD A,(HL)
INC HL INC HL
CP #20 CP " "
JR Z,FID JR Z,FID
CP "1" CP "1"
SCF SCF
@ -425,12 +423,12 @@ IBMDOS_ LD A,(IY+_sBOOT_SEC.ID_FORM)
LD HL,#0FFF LD HL,#0FFF
JR BPB_FAT JR BPB_FAT
GETROOT LD HL,(DIR_FRH) GETROOT: LD HL,(DIR_FRH)
LD IX,(DIR_FRL) LD IX,(DIR_FRL)
LD BC,(DISKL) LD BC,(DISKL)
LD DE,(DISKH) LD DE,(DISKH)
LD A,(DIR_S_S) LD A,(DIR_S_S)
NEXTSEC PUSH AF NEXTSEC: PUSH AF
ADD IX,BC ADD IX,BC
ADC HL,DE ADC HL,DE
;HL:IX ;HL:IX
@ -454,9 +452,9 @@ NEXTSEC PUSH AF
SCF SCF
RET RET
SEARCH LD C,17 ;HANDELS PER SECTOR 512/32 + 1 SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
LD IX,DIR-#0020 LD IX,DIR-#0020
SKIPNAM LD DE,#0020 SKIPNAM: LD DE,#0020
ADD IX,DE ADD IX,DE
DEC C DEC C
RET Z RET Z
@ -473,7 +471,7 @@ SKIPNAM LD DE,#0020
LD D,XH LD D,XH
LD E,XL LD E,XL
LD B,11 LD B,11
SEARCH2 LD A,(DE) SEARCH2: LD A,(DE)
CP (HL) CP (HL)
JR NZ,SKIPNAM JR NZ,SKIPNAM
INC HL INC HL
@ -491,14 +489,13 @@ SEARCH2 LD A,(DE)
; HL - CLUSTER ; HL - CLUSTER
; DE - ADDRESS ; DE - ADDRESS
FLOAD: LD (READMEM),DE
FLOAD LD (READMEM),DE LD_FILE: PUSH HL
LD_FILE PUSH HL
CALL NSECTOR CALL NSECTOR
LD DE,(READMEM) LD DE,(READMEM)
LD A,(BOOT.S_P_C) LD A,(BOOT.S_P_C)
CP #20 CP #20
JR C,SMCLUS JR C,SMALL_CLUSTER
LD BC,#20*256 + BIOS.DRV_READ_LONG LD BC,#20*256 + BIOS.DRV_READ_LONG
LD A,(BANKDOS) LD A,(BANKDOS)
EX AF,AF' EX AF,AF'
@ -507,8 +504,8 @@ LD_FILE PUSH HL
POP HL POP HL
AND A AND A
RET RET
SMALL_CLUSTER:
SMCLUS LD B,A LD B,A
LD C,BIOS.DRV_READ_LONG LD C,BIOS.DRV_READ_LONG
LD A,(BANKDOS) LD A,(BANKDOS)
EX AF,AF' EX AF,AF'

View File

@ -25,13 +25,13 @@
MACRO _mEXEinfo MACRO _mEXEinfo
BLOCK 10,' ' ; ‚ëà ¢­¨¢ ­¨¥ ¤«ï ªà á¨¢®£® ®â®¡à ¦¥­¨ï ¢ HEX BLOCK 10,' ' ; ‚ëà ¢­¨¢ ­¨¥ ¤«ï ªà á¨¢®£® ®â®¡à ¦¥­¨ï ¢ HEX
BYTE ' Bootloader ' BYTE ' Bootloader '
BYTE ' installer ' BYTE ' installer '
BYTE ' for DSS. ' BYTE ' for DSS. '
BYTE ' Vasil Ivanov, ' BYTE ' Vasil Ivanov, '
BYTE ' Anatoliy ' BYTE ' Anatoliy '
BYTE ' Belyanskiy. ' BYTE ' Belyanskiy. '
BYTE ' Sprinter Team, ' BYTE ' Sprinter Team, '
BYTE ' 2023 ' BYTE ' 2023 '
ENDM ENDM

View File

@ -10,6 +10,7 @@
;=====================================================================[] ;=====================================================================[]
;Rev. Date Name Description ;Rev. Date Name Description
;---------------------------------------------------------------------[] ;---------------------------------------------------------------------[]
;R12 23-07-2023 BAO „®¡ ¢«¥­  ª®¬ ­¤  REBOOT - ¯¥à¥§ £à㧪  á ¯®«­®© ®ç¨á⪮© ¯ ¬ïâ¨
;R11 20-07-2023 BAO <09>®¯à ¢«¥­  äã­ªæ¨ï LCPIR ¤«ï ª®à४⭮£® ¢ë¡®à  á®®¡é¥­¨ï ®¡ ®è¨¡ª¥ ¯à¨ ­®¬¥à¥ ®è¨¡ª¨ > § £®â®¢«¥­­ëå á®®¡é¥­¨© ;R11 20-07-2023 BAO <09>®¯à ¢«¥­  äã­ªæ¨ï LCPIR ¤«ï ª®à४⭮£® ¢ë¡®à  á®®¡é¥­¨ï ®¡ ®è¨¡ª¥ ¯à¨ ­®¬¥à¥ ®è¨¡ª¨ > § £®â®¢«¥­­ëå á®®¡é¥­¨©
;R10 16-05-2023 BAO TE•T MODE AND TEXT ARE RESTORED AFTER RETURNING FROM THE APP ;R10 16-05-2023 BAO TE•T MODE AND TEXT ARE RESTORED AFTER RETURNING FROM THE APP
;R09 ??-??-???? DNS ;????? ???? ;R09 ??-??-???? DNS ;????? ????
@ -532,26 +533,27 @@ RUN_BAT CALL BATCH
BATLIST DZ 'PAUSE' : DW CPAUSE BATLIST DZ 'PAUSE' : DW CPAUSE
DZ 'REM' : DW CREM DZ 'REM' : DW CREM
CMDLIST DZ 'CD' : DW CCHDIR CMDLIST DZ 'CD' : DW CCHDIR
DZ 'CHDIR' : DW CCHDIR
DZ 'CLS' : DW CLS
DZ 'DATE' : DW CDATE
DZ 'DEL' : DW CDELET
DZ 'DIR' : DW DIR DZ 'DIR' : DW DIR
DZ 'ECHO' : DW CECHO DZ 'ECHO' : DW CECHO
DZ 'ERASE' : DW CDELET
DZ 'EXIT' : DW CEXIT
DZ 'HELP' : DW HELP
DZ 'MD' : DW CMKDIR
DZ 'MKDIR' : DW CMKDIR
DZ 'PATH' : DW CPATH DZ 'PATH' : DW CPATH
DZ 'MD' : DW CMKDIR
DZ 'REN' : DW CRENAM DZ 'REN' : DW CRENAM
DZ 'RENAME' : DW CRENAM DZ 'DEL' : DW CDELET
DZ 'RD' : DW CRMDIR DZ 'RD' : DW CRMDIR
DZ 'RMDIR' : DW CRMDIR
DZ 'SET' : DW CSET DZ 'SET' : DW CSET
DZ 'TIME' : DW CTIME DZ 'TIME' : DW CTIME
DZ 'VERSION' : DW VERS DZ 'DATE' : DW CDATE
DZ 'VER' : DW VERS DZ 'VER' : DW VERS
DZ 'CLS' : DW CLS
DZ 'CHDIR' : DW CCHDIR
DZ 'MKDIR' : DW CMKDIR
DZ 'RENAME' : DW CRENAM
DZ 'ERASE' : DW CDELET
DZ 'RMDIR' : DW CRMDIR
DZ 'EXIT' : DW CEXIT
DZ 'HELP' : DW HELP
DZ 'VERSION' : DW VERS
DZ 'REBOOT' : DW REBOOT
DB #00 DB #00
CLS LD DE,#0000 CLS LD DE,#0000
@ -1780,9 +1782,21 @@ QUIT: LD B,0
RST ToDSS RST ToDSS
RET RET
;-----------------------------------------------------------------------
;R12
REBOOT: DI
LD C,BIOS.FullInit
RST ToBIOS
LD BC,2*256 + BIOS.REINIT
RST ToBIOS
DI
HALT
;R12
;-----------------------------------------------------------------------
ERR_MSG: INC DE ERR_MSG: INC DE
LD HL,ERR0 LD HL,ERR0
LD BC,ERR1-ERR0 LD BC,ERR0.Size
CALL LCPIR CALL LCPIR
CALL PRINTZ CALL PRINTZ
CALL CRLF CALL CRLF
@ -1795,7 +1809,7 @@ MESSAGE: CALL FMESAGE
FMESAGE: INC DE FMESAGE: INC DE
LD HL,MSG0 LD HL,MSG0
LD BC,MSG1-MSG0 LD BC,MSG0.Size
LCPIR: XOR A LCPIR: XOR A
CPIR CPIR
RET PO RET PO
@ -1903,75 +1917,74 @@ MSG0: DB 0
; FILENAME EXT SIZE DATE TIME ; FILENAME EXT SIZE DATE TIME
DB "%1 %2 %3 %4 %5",CR,LF,0 DB "%1 %2 %3 %4 %5",CR,LF,0
DB "COMMANDS:",CR,LF,CR,LF DB "COMMANDS:",CR,LF,CR,LF
DB "CD DEL HELP RD SET " DB "DIR REN | RENAME PATH HELP ",CR,LF
DB " ",CR,LF DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
DB "CHDIR DIR MD REN TIME " DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
DB " ",CR,LF DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
DB "CLS ERASE MKDIR RENAME VER " ;R11
DB " ",CR,LF BYTE 0
DB "DATE EXIT PATH RMDIR VERSION " DZ "Unknown command"
DB " ",CR,LF ;
DB 0 .Size EQU $-MSG0
MSG1:
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;!FIXIT äã­ªæ¨ï ¢ë§ë¢ îé ï ¢ë¢®¤ ®è¨¡ª¨ ¤¥« ¥â ¢ ­ ç «¥ 䨫ìâà ¯® ­®¬¥à ¬ ¨ ­¥áª®«ìª® ¯¥à¢ëå ®â訢 îâáï ;!FIXIT äã­ªæ¨ï ¢ë§ë¢ îé ï ¢ë¢®¤ ®è¨¡ª¨ ¤¥« ¥â ¢ ­ ç «¥ 䨫ìâà ¯® ­®¬¥à ¬ ¨ ­¥áª®«ìª® ¯¥à¢ëå ®â訢 îâáï
ERR0 DB #00 ERR0: DB #00
DZ "Bad command or file name" DZ "Bad command or file name"
DZ "Invalid function" ; 01 - ­¥¢¥à­ë© ­®¬¥à ä㭪樨 DZ "Invalid function" ; 01 - ­¥¢¥à­ë© ­®¬¥à ä㭪樨
DZ "Invalid drive number" ; 02 - ­¥¯à ¢¨«ì­ë© ­®¬¥à ãáâனá⢠ DZ "Invalid drive number" ; 02 - ­¥¯à ¢¨«ì­ë© ­®¬¥à ãáâனá⢠
DZ "File not found" ; 03 - ä ©« ­¥ ®¡­ à㦥­ DZ "File not found" ; 03 - ä ©« ­¥ ®¡­ à㦥­
DZ "Path not found" ; 04 - ­¥¢¥à­ë© ¯ãâì DZ "Path not found" ; 04 - ­¥¢¥à­ë© ¯ãâì
DZ "Invalid handle" ; 05 - ­¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à DZ "Invalid handle" ; 05 - ­¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
DZ "No free filehandle" ; 06 - ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à  DZ "No free filehandle" ; 06 - ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
DZ "File exist" ; 07 - ä ©« áãé¥áâ¢ã¥â DZ "File exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥭¨ï DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥭¨ï
DZ "Root overflow" ; 09 - ¯¥à¥¯®«­¥­¨¥ ROOT (ª®à­¥¢®£® ª â «®£ ) DZ "Root overflow" ; 09 - ¯¥à¥¯®«­¥­¨¥ ROOT (ª®à­¥¢®£® ª â «®£ )
DZ "No free space" ; 10 - ­¥â ᢮¡®¤­®£® ¬¥áâ  ­  ¤¨áª¥ DZ "No free space" ; 10 - ­¥â ᢮¡®¤­®£® ¬¥áâ  ­  ¤¨áª¥
DZ "Directory not empty" ; 11 - ª â «®£ ­¥ ¯ãáâ DZ "Directory not empty" ; 11 - ª â «®£ ­¥ ¯ãáâ
DZ "Can't delete current directory" ; 12 - ­¥ã¤ ç­ ï ¯®¯ë⪠ 㤠«¨âì ⥪ã騩 ª â «®£ DZ "Can't delete current directory" ; 12 - ­¥ã¤ ç­ ï ¯®¯ë⪠ 㤠«¨âì ⥪ã騩 ª â «®£
DZ "Invalid media" ; 13 - ­¥¨§¢¥áâ­ë© ä®à¬ â DZ "Invalid media" ; 13 - ­¥¨§¢¥áâ­ë© ä®à¬ â
DZ "Unknown operation" ;R02 ; 14 - ­¥¢®§¬®¦­ ï ®¯¥à æ¨ï DZ "Unknown operation" ;R02 ; 14 - ­¥¢®§¬®¦­ ï ®¯¥à æ¨ï
DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì
DZ "Invalid filename" ; 16 - ­¥¢¥à­®¥ ¨¬ï DZ "Invalid filename" ; 16 - ­¥¢¥à­®¥ ¨¬ï
DZ "Invalid EXE-file" ; 17 - ­¥¯à ¢¨«ì­ë© EXE-ä ©« DZ "Invalid EXE-file" ; 17 - ­¥¯à ¢¨«ì­ë© EXE-ä ©«
DZ "Not supported EXE-file" ; 18 - ­¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©«  DZ "Not supported EXE-file" ; 18 - ­¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©« 
DZ "Access denied" ; 19 - à¥áãàá ­¥ ¤®áâ㯥­ DZ "Access denied" ; 19 - à¥áãàá ­¥ ¤®áâ㯥­
DZ "Not ready" ; 20 - ­¥â £®â®¢­®á⨠DZ "Not ready" ; 20 - ­¥â £®â®¢­®áâ¨
DZ "Seek error" ; 21 - ®è¨¡ª  ¯®§¨æ¨®­¨à®¢ ­¨ï DZ "Seek error" ; 21 - ®è¨¡ª  ¯®§¨æ¨®­¨à®¢ ­¨ï
DZ "Sector not found" ; 22 - ᥪâ®à ­¥ ­ ©¤¥­ DZ "Sector not found" ; 22 - ᥪâ®à ­¥ ­ ©¤¥­
DZ "CRC error" ; 23 - ®è¨¡ª  CRC DZ "CRC error" ; 23 - ®è¨¡ª  CRC
DZ "Write protect" ; 24 - § é¨â  § ¯¨á¨ DZ "Write protect" ; 24 - § é¨â  § ¯¨á¨
DZ "Read error" ; 25 - ®è¨¡ª  ç⥭¨ï DZ "Read error" ; 25 - ®è¨¡ª  ç⥭¨ï
DZ "Write error" ; 26 - ®è¨¡ª  § ¯¨á¨ DZ "Write error" ; 26 - ®è¨¡ª  § ¯¨á¨
DZ "Drive failure" ; 27 - á¡®© ¤¨áª  DZ "Drive failure" ; 27 - á¡®© ¤¨áª 
DZ "Extended error 28" DZ "Extended error 28"
DZ "Extended error 29" DZ "Extended error 29"
DZ "No free memory" ; 30 - ­¥¤®áâ â®ç­® ¯ ¬ï⨠DZ "No free memory" ; 30 - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
DZ "Invalid memory block" ; 31 - ­¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ï⨠DZ "Invalid memory block" ; 31 - ­¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
DZ "Extended error 32" DZ "Extended error 32"
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ë襭 ¬ ªá¨¬ «ì­ë© à §¬¥à ¯¥à¥¬¥­­®© DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ë襭 ¬ ªá¨¬ «ì­ë© à §¬¥à ¯¥à¥¬¥­­®©
DZ "Extended error 34" DZ "Extended error 34"
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬­®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨ DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬­®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥­­®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023 DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥­­®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
DZ "Operation interrupted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬ DZ "Operation interrupted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª  DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª 
DZ "Unexpected application termination" ; 39 - unexpected application termination / ­¥®¦¨¤ ­­®¥ § ¢¥à襭¨¥ ¯à¨«®¦¥­¨ï DZ "Unexpected application termination" ; 39 - unexpected application termination / ­¥®¦¨¤ ­­®¥ § ¢¥à襭¨¥ ¯à¨«®¦¥­¨ï
DZ "40" DZ "40"
DZ "41" DZ "41"
DZ "42" DZ "42"
DZ "43" DZ "43"
DZ "44" DZ "44"
DZ "45" DZ "45"
DZ "46" DZ "46"
DZ "Wrong video mode" ; 48 - ­¥¯à ¢¨«ì­ë© ¢¨¤¥®à¥¦¨¬ DZ "Wrong video mode" ; 48 - ­¥¯à ¢¨«ì­ë© ¢¨¤¥®à¥¦¨¬
DZ "48" DZ "48"
DZ "49" DZ "49"
DZ "50" DZ "50"
;R11 ;R11
BYTE 0 ; ®£à ­¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥­¨© ¢ë¤ ¢ «®áì ®¡é¥¥: DB 0 ; ®£à ­¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥­¨© ¢ë¤ ¢ «®áì ®¡é¥¥:
DZ "Unknown error" DZ "Unknown error"
; ;
ERR1: .Size EQU $-ERR0
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
GETPATH: GETPATH:

View File

@ -1411,7 +1411,7 @@ SETTIME PUSH IX
PUSH BC PUSH BC
PUSH HL PUSH HL
PUSH DE PUSH DE
LD C,#F5 LD C,BIOS.CMOS_TEST
RST ToBIOS RST ToBIOS
JP C,NOCMOS2 JP C,NOCMOS2
POP AF POP AF

View File

@ -6,15 +6,25 @@
;--------------------------------------------------------------- ;---------------------------------------------------------------
;R00 2003-03-19 DNS Initial version ;R00 2003-03-19 DNS Initial version
;--------------------------------------------------------------- ;---------------------------------------------------------------
// INCLUDE "hardware.inc"
// INCLUDE "bios.inc"
; ORG #0000 ; ORG #0000
MODULE DRV ; !FIXIT ®¡®©â¨áì ¡¥§ ¬®¤ã«ï
;PAGEDRV EQU 0 ;PAGEDRV EQU 0
;===============;
;!FIXIT ¢ ¯à®æ¥¤ãॠª®â®à ï ¡ã¤¥â ®â¢¥ç âì §  ¯¥à¥å®¤ ¨§ í⮩ áâà ­¨æë ®¡à â­® ¢ MAIN ¤«ï ¢ë§®¢  ä㭪権
; „‘‘ ¨, ¢®§¬®¦­®, ¯®¢â®à­®¬ã § å®¤ã ¢ íâã áâà ­¨æã ç¥à¥§ RST #18 ¨§ ¤à㣨å áâà ­¨æ (ª®â®àëå ¯®ª  ­¥â)
; ᤥ« âì ­¥çâ® ¯®¤®¡­®¥ á ¯à®£à ¬¬­ë¬ á⥪®¬ áâà ­¨æ. <20>â  ¯à®æ¥¤ãà  ¨å á®åà ­ï¥â, ¯à¨¬¥à­® â ª ï ¦¥
; ¤®«¦­  ¢®ááâ ­ ¢«¨¢ âì.
; PUSH HL
;.SP+1: LD HL,DRV_PAGE.RSTx18_RET_PAGES
; LD (HL),A
; DEC L ; <20>¥ HL,   L - ç⮡ § ª®«ì楢 âì ®¡« áâì
; LD (.SP),HL
; POP HL
;===============;
;!TODO ;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[NOT USED]> ; ; <[NOT USED]> ;
@ -32,7 +42,7 @@ RST_00:
; ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[BIOS API]> ; ; <[BIOS API]> ;
BLOCK 8-$,#FF ; BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode
A0008: PUSH AF ; A0008: PUSH AF ;
LD A,SYS_PORT.PAGE8; LD A,SYS_PORT.PAGE8;
OUT (SYS_PORT.ON),A ; OUT (SYS_PORT.ON),A ;
@ -44,35 +54,35 @@ A0008: PUSH AF ;
;!FIXIT ;!FIXIT
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[DSS API]> ; ; <[DSS API]> ;
BLOCK #10-$,#FF ; BLOCK #10-$,#C7 ; #C7 - "RST 0" opcode
A0010: ;JP RST_10 ; A0010: ;JP DRV_PAGE.RST_10 ;
DI : HALT ; DI : HALT ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
; ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[DRIVE API]> ; ; ; <[DRIVE API]> ;
BLOCK #18-$,#FF ; ; BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode
;A0018 JP INTDISK ; ; ;A0018 JP INTDISK ;
A0018: PUSH AF ; ; A0018: PUSH AF ;
PUSH BC ; ; PUSH BC ;
MAIN_PG_NUMBER+2: ; ; DRV_PAGE.MAIN_PAGE_NUMBER+2: ;
LD BC,0*256 + SLOT0 ; !FIXIT á ­¥ ¤®«¦­ë ¢áâ ¢«ïâìáï ­®¬¥à  ¢ë¤¥«¥­­ëå áâà ­¨æ? ; LD BC,0*256 + SLOT0 ; !FIXIT á ­¥ ¤®«¦­ë ¢áâ ¢«ïâìáï ­®¬¥à  ¢ë¤¥«¥­­ëå áâà ­¨æ?
JP PORTAL.outDRV ; ; JP PORTAL.outDRV ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
;!TODO ;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[NOT USED]> ; ; <[NOT USED]> ;
BLOCK #20-$,#FF ; BLOCK #20-$,#C7 ; #C7 - "RST 0" opcode
A0020: JP RST_20 ; A0020: JP DRV_PAGE.RST_20 ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
; ;
RST_20: DRV_PAGE.RST_20:
LD A,DSS_Error.drv.INVALID_COMMAND LD A,DSS_Error.drv.INVALID_COMMAND
SCF SCF
RET RET
@ -81,13 +91,13 @@ RST_20:
;!TODO ;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[NOT USED]> ; ; <[NOT USED]> ;
BLOCK #28-$,#FF ; BLOCK #28-$,#C7 ; #C7 - "RST 0" opcode
A0028: JP RST_28 ; A0028: JP DRV_PAGE.RST_28 ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
; ;
RST_28: DRV_PAGE.RST_28:
LD A,DSS_Error.drv.INVALID_COMMAND LD A,DSS_Error.drv.INVALID_COMMAND
SCF SCF
RET RET
@ -96,7 +106,7 @@ RST_28:
;!TODO ;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[NOT USED]> ; ; <[NOT USED]> ;
BLOCK #30-$,#FF ; BLOCK #30-$,#C7 ;
A0030: JP RST_30 ; A0030: JP RST_30 ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
@ -111,7 +121,7 @@ RST_30:
;!FIXIT ;!FIXIT
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[MAIN INT]> ; ; <[MAIN INT]> ;
BLOCK #38-$,#FF ; BLOCK #38-$,#C7 ;
A0038: ; A0038: ;
; JP RST_38 ; ; JP RST_38 ;
; RST_38: ; ; RST_38: ;
@ -148,56 +158,51 @@ A0038: ;
; ;
; ;
KEYSCAN: RET ;!FIXIT DRV_PAGE.KEYSCAN: RET ;!FIXIT
; ;
; ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[ NMI ]> ; ; <[ NMI ]> ;
NMI: RETN ; DRV_PAGE.NMI: RETN ;
BLOCK #66-$,#FF ; BLOCK #66-$,#C7;
A0066: JP NMI ; A0066: JP DRV_PAGE.NMI ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
;-------------------------------; ;-------------------------------;
;ADRST10 EQU #00 ;!!!!! ;ADRST10 EQU #00 ; ;!!!!!
;-------------------------------; ;-------------------------------;
;!FIXIT ;!FIXIT
RST_10 PUSH HL ; DRV_PAGE.RST_10:
LD L,C ; PUSH HL
LD H,ADRST10/256 ; LD L,C
LD C,(HL) ; LD H,ADRST10/256
INC H ; LD C,(HL)
LD H,(HL) ; INC H
LD L,C ; LD H,(HL)
EX (SP),HL ; LD L,C
RET ; EX (SP),HL
; RET
; ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[DRIVE PAGE SWITCH]> ; ; <[DRIVE PAGE SWITCH]> ;
BLOCK #7E-$,0 ; _mInfoBLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
PORTAL.toMAIN: ; PORTAL.out_DRV: PUSH BC ;
PUSH BC ; .RETBANK+2: LD BC,0*256+SLOT0 ;
RETBANK+2: ; .switch: OUT (C),B ;
LD BC,0*256+SLOT0 ; ASSERT $!=84,'-> Portal error!';
OUT (C),B ; ;Entry point from DSS main page
ASSERT $!=84,'-> Portal error!'; LD (.RETBANK),A ;
;Entry point from DSS main page ; !FIXIT ¥á«¨ 2 à §  ¯à¨«¥â¥âì ­  íâã â®çªã ¢å®¤ , â® § áàñâáï RETBANK POP BC ;
LD (RETBANK),A ; POP AF ;
POP BC ; ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK
POP AF ; JP PORTAL.out_DRV ;
ADCALL+1: ;
CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK
JR PORTAL.toMAIN ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
/* display "=============================",/H,(#82-#73-(PORTAL.toMAIN.switch-PORTAL.toMAIN))
push hl
*/
;!FIXIT çñâ ­¥ â® âãâ ;!FIXIT çñâ ­¥ â® âãâ
@ -214,23 +219,162 @@ PORTAL.outDRV: ;
; ;
DISPATCH: DISPATCH:
CALL INITDVC
LD HL,INTDISK LD HL,INTDISK
LD (ADCALL),HL LD (ADCALL),HL
LD A,(LDRIVE) INITDVC_RET_DRIVE:
CALL INITDVC
LD A,(DRV_PAGE.LDRIVE)
AND A AND A
RET RET
; ;
LDRIVE DB #00 DRV_PAGE.LDRIVE: DB #00
INCLUDE 'dss/media_drivers/Shared.asm' INCLUDE 'dss/media_drivers/shared-drv.asm'
INCLUDE 'dss/media_drivers/ide.asm' INCLUDE 'dss/media_drivers/ide-drv.asm'
INCLUDE 'dss/media_drivers/fdd.asm' INCLUDE 'dss/media_drivers/fdd-drv.asm'
INCLUDE 'dss/media_drivers/ram_disk.asm' INCLUDE 'dss/media_drivers/ram_disk-drv.asm'
; DB 0 DEVICE_CFG:
DRV_TEMP_BUFFER:
ENDMODULE ;
;
;---------[256 bytes stack for return pages of RST #18 callers]--------;
; #3F00 - #3FFF
DRV_PAGE.RSTx18_RET_PAGES EQU #3FFF
;----------------------------------------------------------------------;
ASSERT ((#4000-DRV_TEMP_BUFFER-256) > (DEVICE.Size + LOGDRV.Size + RAMDTBL.Size)), "No space for DRV_TEMP_BUFFER in DRV-MAIN page"
; ENDMODULE
; OUTEND ; OUTEND
;[END] ;[END]
/*
;
; NEW RESCAN
;=====================================================================[]
; «®£¨ç¥áª¨© ­®¬¥à ãáâனá⢠ +  ¤à¥á ®¡à ¡®â稪 .
; <20>®à浪®¢ë© ­®¬¥à * 3 = ¡ãª¢  ¤¨áª  + "A"
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*3,#FF
.Size: EQU $-DEVICE
; ‹®£¨ç¥áª¨© ­®¬¥à à §¤¥« .
;<3B>®¬¥à £à㯯ë = «®£¨ç¥áª¨© ­®¬¥à à §¤¥«  HDD ¨§ DEVICE
LOGDRV: BLOCK 16*LD_DSK,0
.Size: EQU $-LOGDRV
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
;+01 LONG SECTOR OFFSET
;+05 LONG SIZE IN SECTORS (SECTORS ON LOGICAL DISK)
;+09 FREE
;+15
; <E28099>ˆ€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆŠ€ ˆ …ƒŽ RAM-DISK ID
; DB RAM_DRIVE_ID, RAM_DRIVE_NUMBER
RAMDTBL: DUP MAX_RAMDRIVES * 2
DB #FF
EDUP
.Size EQU $-RAMDTBL
INTDISK:
;R01
CP #FF
JR NZ,.noNeedRescan
CP C
JR Z,INITDVC_RET_DRIVE
.noNeedRescan:
;
PUSH HL
PUSH BC
ADD A,A
ADD A,A
LD C,A
LD B,0
LD HL,DEVICE
ADD HL,BC
LD A,(HL)
CP #FF
JR Z,NODEV
INC HL
INC HL
LD C,(HL)
INC HL
LD H,(HL)
LD L,C
POP BC
EX (SP),HL
RET
NODEV: POP BC
POP HL
LD A,DSS_Error.drv.INVALID_DRIVE
SCF
RET
INITDVC: XOR A
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
LD HL,DEVICE
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
; FDD ¤¥¢ ©áë
CALL FDDRIVE.INIT ; ã§­ âì ç¨á«® FDD-¤¥¢ ©á®¢
LD DE,FDDRIVE ;  ¤à¥á ®¡à ¡®â稪  ⥪. ¤¥¢ ©á 
CALL MAKEDVC ; ¨­¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
; HDD ¤¥¢ ©áë
; ¥á«¨ ­  áâ à⥠¢¥àá¨ï BIOS ­¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦­® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥­  ª®¤  ­  XOR A : RET
.if_old: CALL INIT_H
;CALL .CHECK_HDD
LD DE,HDDRIVE
CALL MAKEDVC
; RAM-¤¨áª¨
CALL INIT_RD
LD DE,RMDRIVE
CALL MAKEDVC
XOR A
RET
.CHECK_HDD:
RET
;R01
INITDVC_RET_DRIVE:
LD DE,DRV_TEMP_BUFFER
LD HL,DEVICE
LD BC,DEVICE.Size
LDIR
LD HL,LOGDRV
LD BC,LOGDRV.Size
LDIR
LD HL,RAMDTBL
LD BC,RAMDTBL.Size
LDIR
CALL INITDVC
; ‘à ¢­¨¢ ¥¬ áâ àë© DEVICE ¡ãä¥à á ­®¢ë¬, ¥á«¨ ¢ ­®¢®¬ ­¥â ãáâனá⢠, â® § â¨à ¥¬ ¢ áâ àëå ¡ãä¥à å ¥£®
LD HL,DEVICE
LD DE,DRV_TEMP_BUFFER
LD B,DEVICE.Size
.loop_DEVICE:
LD A,(DE)
CP (HL)
CALL NZ,.FIND_DEV
INC HL
INC DE
DJNZ .loop_DEVICE
LD A,(DRV_PAGE.LDRIVE)
AND A
RET
;
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*4,#FF
;=====================================================================[]
;
;
*/

View File

@ -9,6 +9,7 @@
;[ ] ¯ãâì ⥪ã饣® ª â «®£  ¢ DIR ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ®­ ¤«¨­¥¥ 256 ¡ ©â®¢ ;[ ] ¯ãâì ⥪ã饣® ª â «®£  ¢ DIR ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ®­ ¤«¨­¥¥ 256 ¡ ©â®¢
;[ ] ¯ãâì ¢ ¯à¨£« è¥­¨¨ ª®­á®«¨ ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ¯ãâì ¤«¨­¥¥ 256 ¡ ©â®¢ ;[ ] ¯ãâì ¢ ¯à¨£« è¥­¨¨ ª®­á®«¨ ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ¯ãâì ¤«¨­¥¥ 256 ¡ ©â®¢
;[ ] ;!FIXIT ª ª®©-â® ¡ £ ¯à¨ ª®â®à®¬ ¥á«¨ ­¥â ¤¨áª  ¨ ­  ­¥£® ¯®«¥§âì, â® ¢áñ «®¬ ¥âáï ;[ ] ;!FIXIT ª ª®©-â® ¡ £ ¯à¨ ª®â®à®¬ ¥á«¨ ­¥â ¤¨áª  ¨ ­  ­¥£® ¯®«¥§âì, â® ¢áñ «®¬ ¥âáï
;R12 24-07-2023 BAO Check minimum BIOS version on boot
;R11 17-04-2023 BAO OPTIMIZED BUFFERS, FREED UP 768 BYTES FOR CODE ;R11 17-04-2023 BAO OPTIMIZED BUFFERS, FREED UP 768 BYTES FOR CODE
;R10 14-04-2023 BAO €¢ à¨©­ë© § ¢¨á®­ á ¢ë¢®¤®¬ á®®¡é¥­¨ï ¯à¨ áâ à⥠á¨á⥬ë, ¥á«¨ ­¥â ᢮¡®¤­®© ¯ ¬ï⨠;R10 14-04-2023 BAO €¢ à¨©­ë© § ¢¨á®­ á ¢ë¢®¤®¬ á®®¡é¥­¨ï ¯à¨ áâ à⥠á¨á⥬ë, ¥á«¨ ­¥â ᢮¡®¤­®© ¯ ¬ïâ¨
;R09 08-04-2023 BAO ‘®ªà é¥­¨¥ à §¬¥à  â ¡«¨æë API ¤® 96 ä㭪権 (0 - #5F). (Ž¯æ¨®­ «ì­® ¯à¨ ª®¬¯¨«ï樨) ;R09 08-04-2023 BAO ‘®ªà é¥­¨¥ à §¬¥à  â ¡«¨æë API ¤® 96 ä㭪権 (0 - #5F). (Ž¯æ¨®­ «ì­® ¯à¨ ª®¬¯¨«ï樨)
@ -94,7 +95,7 @@ RST_0x18: PUSH AF ;
PUSH BC ; PUSH BC ;
DRV_PG_NUMBER+2: ; DRV_PG_NUMBER+2: ;
LD BC,0*256+SLOT0 ; LD BC,0*256+SLOT0 ;
JP PORTAL.outMAIN ; JP PORTAL.out_MAIN ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
@ -219,7 +220,7 @@ RST_10: PUSH HL
; <[DRIVE PAGE SWITCH]> ; ; <[DRIVE PAGE SWITCH]> ;
_mInfoBLOCK #80-$,0 ; _mInfoBLOCK #80-$,0 ;
;ENTER: ; ;ENTER: ;
PORTAL.outMAIN: ; PORTAL.out_MAIN: ;
IN A,(C) ; IN A,(C) ;
OUT (C),B ; OUT (C),B ;
ASSERT $!=84,'-> Portal error!'; ASSERT $!=84,'-> Portal error!';
@ -262,19 +263,33 @@ PORTAL.outMAIN: ;
;R01 ;R01
; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨­¨æ¨ «¨§ æ¨¨  ¤à¥á ¢ â ¡«¨æ¥ ¬¥­ï¥âáï ­  VERSION ; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨­¨æ¨ «¨§ æ¨¨  ¤à¥á ¢ â ¡«¨æ¥ ¬¥­ï¥âáï ­  VERSION
F_START: F_START: DI
DI
LD (.saveDRV),A LD (.saveDRV),A
CALL DEPLOY ;R07 ;íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï ;R12
LD C,BIOS.DRV_VERSION
RST ToBIOS
JR C,.err_oldBIOS
EX DE,HL
LD DE,MINIMUM_BIOS_VERSION
SBC HL,DE
JR NC,.good
LD A,(.saveDRV)
CP 2 ;¯à®¢¥àª  ­  § £à㧪ã á ¤¨áª¥âë, ¥á«¨ á ¤¨áª¥âë, â® ¬®¦­® ¯à®¨£­®à¨âì § ¯ã᪠­  BIOS ­¨¦¥ 2.55
JR NC,.err_oldBIOS
LD HL,#C9AF ; XOR A : RET opcodes
LD (DRV_CONTENT + INITDVC.if_old),HL ;!!!!!!
;
.good: CALL DEPLOY ;R07 ;íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï
RET C ;R10 RET C ;R10
CALL KINIT CALL KINIT
CALL PRINT_INIT CALL PRINT_INIT
LD C,0 LD C,0 ;!HARDCODE
RST #30 RST #30 ;!HARDCODE
LD A,(VMODE) LD A,(VMODE)
LD C,#81 LD C,#81 ;!HARDCODE
RST #30 RST #30 ;!HARDCODE
;CALL INITDVC ;R05 ;CALL INITDVC ;R05
;R05 ;R05
LD C,Dss.DRV.Init LD C,Dss.DRV.Init
@ -284,7 +299,7 @@ F_START:
.saveDRV+1: LD A,0 .saveDRV+1: LD A,0
LD BC,1*256 + Dss.BootDSK LD BC,1*256 + Dss.BootDSK
RST #10 RST ToDSS
EI EI
;Set new address fn. VERSION ;Set new address fn. VERSION
@ -315,6 +330,18 @@ F_START:
ENDIF ENDIF
;R02 ;R02
JP VERSION JP VERSION
;R12
.err_oldBIOS:
LD HL,.err_oldBIOS_message
LD C,Dss.PChars
RST ToDSS
SCF
RET
.err_oldBIOS_message:
DZ "\r\nWARNING! This version of DSS requires BIOS v2.55 or later to boot from IDE."
;
;R03 ;R03
;R07Allocate memory ;R07Allocate memory
; LD BC,#03C2 ; LD BC,#03C2
@ -502,7 +529,7 @@ DEPLOY:
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF PUSH AF
IN A,(SLOT0) IN A,(SLOT0)
LD (DRV.MAIN_PG_NUMBER),A LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A ;!TEST
OUT (SLOT3),A OUT (SLOT3),A
LD A,C LD A,C
@ -546,7 +573,6 @@ DEPLOY:
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||; ;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes." DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes."
DRV_CONTENT: DRV_CONTENT:
; ENDMODULE
DISP 0 DISP 0
INCLUDE 'DRV-MAIN.ASM' INCLUDE 'DRV-MAIN.ASM'
ENT ENT

View File

@ -222,8 +222,6 @@ FDDRIVE:
; 80 - SET DEVICE PARAMETERS ; 80 - SET DEVICE PARAMETERS
; 81 - WRITE TRACK ; 81 - WRITE TRACK
; 82 - FORMAT TRACK ; 82 - FORMAT TRACK
.IOCTL_F: .IOCTL_F:
BIT 7,B BIT 7,B
JR NZ,.O_CTL_F JR NZ,.O_CTL_F
@ -263,7 +261,6 @@ FDDRIVE:
; D5 - "1" RESERVED ; D5 - "1" RESERVED
; D6 - ADDRESSING MODE LBA/CHS ; D6 - ADDRESSING MODE LBA/CHS
; D7 - "1" RESERVED ; D7 - "1" RESERVED
.FGETPRM: .FGETPRM:
EX DE,HL EX DE,HL
LD BC,#55AA LD BC,#55AA
@ -276,7 +273,7 @@ FDDRIVE:
LD A,L LD A,L
AND #0F AND #0F
PUSH AF PUSH AF
LD C,#58 LD C,BIOS.DRV_GET_PAR
RST ToBIOS RST ToBIOS
JR C,.NONEF JR C,.NONEF
PUSH HL PUSH HL
@ -334,7 +331,6 @@ FDDRIVE:
; D5 - "1" RESERVED ; D5 - "1" RESERVED
; D6 - ADDRESSING MODE LBA/CHS ; D6 - ADDRESSING MODE LBA/CHS
; D7 - "1" RESERVED ; D7 - "1" RESERVED
.FSETPRM: .FSETPRM:
PUSH AF PUSH AF
EXX EXX
@ -346,13 +342,13 @@ FDDRIVE:
PUSH AF PUSH AF
PUSH HL PUSH HL
PUSH DE PUSH DE
LD C,#58 LD C,BIOS.DRV_GET_PAR
RST ToBIOS RST ToBIOS
POP DE POP DE
POP HL POP HL
JR C,.NONEF JR C,.NONEF
POP AF POP AF
LD C,#59 LD C,BIOS.DRV_SET_PAR
RST ToBIOS RST ToBIOS
RET C RET C
AND A AND A

View File

@ -6,7 +6,7 @@
;--------------------------------------------------------------- ;---------------------------------------------------------------
; ;
; Disk Driver Specification ver. 2.20 ; Disk Driver Specification ver. 2.20
;[]===========================================================[] ;[]===========================================================[0]
;Procedure : Initialization ;Procedure : Initialization
; ;
;Function : Initialization device(s) ;Function : Initialization device(s)
@ -15,8 +15,9 @@
; IX - Environment ; IX - Environment
;Output : A = Amount drive support ;Output : A = Amount drive support
; HL = Size driver ; HL = Size driver
;[]===========================================================[] ;[]===========================================================[0]
;[]===========================================================[]
;[]===========================================================[1]
;Procedure : Open ;Procedure : Open
; ;
;Function : Open disk ;Function : Open disk
@ -25,8 +26,9 @@
; A - Drive ; A - Drive
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[1]
;[]===========================================================[]
;[]===========================================================[2]
;Procedure : Close ;Procedure : Close
; ;
;Function : Close disk ;Function : Close disk
@ -35,8 +37,9 @@
; A - Drive ; A - Drive
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[2]
;[]===========================================================[]
;[]===========================================================[3]
;Procedure : Media check ;Procedure : Media check
; ;
;Function : Checking change line ;Function : Checking change line
@ -46,8 +49,9 @@
;Output : A = 00h disk no changed ;Output : A = 00h disk no changed
; A = 0FFh disk changed ; A = 0FFh disk changed
; ;
;[]===========================================================[] ;[]===========================================================[3]
;[]===========================================================[]
;[]===========================================================[4]
;Procedure : Get BPB ;Procedure : Get BPB
; ;
;Function : Get Block Parameters BIOS ;Function : Get Block Parameters BIOS
@ -56,8 +60,9 @@
; DE - Address ; DE - Address
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[4]
;[]===========================================================[]
;[]===========================================================[5]
;Procedure : Input ;Procedure : Input
; ;
;Function : Input from disk ;Function : Input from disk
@ -68,8 +73,9 @@
; B - Sector count ; B - Sector count
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[5]
;[]===========================================================[]
;[]===========================================================[6]
;Procedure : Output ;Procedure : Output
; ;
;Function : Output to disk ;Function : Output to disk
@ -80,8 +86,9 @@
; B - Sector count ; B - Sector count
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[6]
;[]===========================================================[]
;[]===========================================================[7]
;Procedure : Removable ;Procedure : Removable
; ;
;Function : Checking change line ;Function : Checking change line
@ -91,8 +98,9 @@
;Output : A = 00h Removable ;Output : A = 00h Removable
; A = FFh Nonremovable ; A = FFh Nonremovable
; ;
;[]===========================================================[] ;[]===========================================================[7]
;[]===========================================================[]
;[]===========================================================[8]
;Procedure : Generic IOCTL ;Procedure : Generic IOCTL
; ;
;Function : Generic Input Output Control ;Function : Generic Input Output Control
@ -110,8 +118,9 @@
; 82h - Format track ; 82h - Format track
;Output : ;Output :
; ;
;[]===========================================================[] ;[]===========================================================[8]
;[]===========================================================[]
;[]===========================================================[9]
;Procedure : Read Long ;Procedure : Read Long
; ;
;Function : Reading sectors from disk ;Function : Reading sectors from disk
@ -125,8 +134,9 @@
; HL:IX - Next Logical Block (sector) ; HL:IX - Next Logical Block (sector)
; DE - Next Address ; DE - Next Address
; ;
;[]===========================================================[] ;[]===========================================================[9]
;[]===========================================================[]
;[]===========================================================[10]
;Procedure : Write Long ;Procedure : Write Long
; ;
;Function : Writing sectors to disk ;Function : Writing sectors to disk
@ -140,7 +150,8 @@
; HL:IX - Next Logical Block (sector) ; HL:IX - Next Logical Block (sector)
; DE - Next Address ; DE - Next Address
; ;
;[]===========================================================[] ;[]===========================================================[10]
; ;
; Errors: ; Errors:
; 0 (00h) - NO ERRORS ; 0 (00h) - NO ERRORS
@ -158,7 +169,7 @@
; 12 (0Ch) - BUSY (DEVICE OPENED) ; 12 (0Ch) - BUSY (DEVICE OPENED)
; 13 (0Dh) - RESERVED ; 13 (0Dh) - RESERVED
LD_DSK EQU 16 LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å ¤¨áª®¢ ¢ á¨á⥬¥
; IDE0 EQU #0C1C0 ; IDE0 EQU #0C1C0
; IDE1 EQU #0C1C8 ; IDE1 EQU #0C1C8
@ -166,77 +177,110 @@ PART EQU #C000
HDDRIVE INC C HDDRIVE INC C
DEC C DEC C
JP Z,INIT_H ;#00 JP Z,INIT_H ; c=0 Initialization
DEC C DEC C
JP Z,RESE_H ;#01 JP Z,RESE_H ; c=1 open
DEC C DEC C
JP Z,STAT_H ;#02 JP Z,STAT_H ; c=2 close
DEC C DEC C
JP Z,CHEK_H ;#03 JP Z,CHEK_H ; c=3 media check (ᬥ­  ­®á¨â¥«ï)
DEC C DEC C
JP Z,GBPB_H ;#04 JP Z,GBPB_H ; c=4 get BPB
DEC C DEC C
JP Z,READH ;#05 JP Z,READH ; c=5 input (ç⥭¨¥ ᥪâ®à®¢)
DEC C DEC C
JP Z,WRITEH ;#06 JP Z,WRITEH ; c=6 output (§ ¯¨áì ᥪâ®à®¢)
DEC C DEC C
JP Z,REMOV_H ;#07 JP Z,REMOV_H ; c=7 Removable
DEC C DEC C
JP Z,IOCTL_H ;#08 JP Z,IOCTL_H ; c=8 ã§­ âì £¥®¬¥âà¨î ¤¨áª  Generic IOCTL
DEC C DEC C
JP Z,RESR_H ;#09 JP Z,RESR_H ; c=9 Reserved
DEC C DEC C
JP Z,LREADH ;#0A JP Z,LREADH ; c=10 Read Long
DEC C DEC C
JP Z,LWRITEH ;#0B JP Z,LWRITEH ; c=11 Write Long
RESR_H LD A,DSS_Error.drv.INVALID_COMMAND RESR_H LD A,DSS_Error.drv.INVALID_COMMAND
SCF SCF
RET RET
;Commands for restart #18
INIT_H PUSH IY ////////////////////////////////////////////////////////////////////////
// Commands for restart #18 //
////////////////////////////////////////////////////////////////////////
;!FIXIT ---------------------------------------------------------------------------[v]
; c=0 Initialization
INIT_H: PUSH IY
LD HL,LOGDRV LD HL,LOGDRV
LD (OFFSECT),HL LD (OFFSECT),HL
LD IX,DEVICE_CFG ;!TODO ᤥ« âì RAMDRIVE âãâ ¢ DEVICE_CFG ?
; IN A,(SLOT2)
; PUSH AF
; IN A,(SLOT0)
; OUT (SLOT2),A
;LD IX,DEVICE_CFG+#8000 ; ¬®£«® § áà âì ¯ ¬ïâì
LD IX,SYS_PAGE.TMP_BUFFER
LD C,BIOS.DRV_LIST LD C,BIOS.DRV_LIST
RST ToBIOS RST ToBIOS
XOR A
;!TEST
;LD B,(IX+2) ;HDD
;CP B
CP (IX+2)
JR Z,NO_HARDS
LD BC,4*256 + #80 ;!HARDCODE 4 - ª®«¨ç¥á⢮ ¢¨­â®¢, 80 - ID ¢¨­â 
NX_DVCI PUSH BC IN A,(SLOT3)
LD C,A
LD A,SYS_PAGE
OUT (SLOT3),A
XOR A
LD B,(IX+2) ;ª®«¨ç¥á⢮ HDD ¤«ï ¯à®æ¥¤ãàë NX_DVCI
CP B
LD A,C
OUT (SLOT3),A
JR Z,NO_HARDS
;LD BC,4*256 + #80 ;!HARDCODE 4 - ª®«¨ç¥á⢮ ¢¨­â®¢, 80 - ID ¢¨­â  ;!FIXIT
LD C,#80 ;!HARDCODE - ID ¢¨­â  ¤«ï ¯à®æ¥¤ãàë BIOS.DRV_DETECT
NX_DVCI: PUSH BC
LD A,C LD A,C
LD (DRV),A LD (DRV_NUM),A
CALL PARTIT LD C,BIOS.DRV_DETECT
RST ToBIOS
;JR C,.NO_DRIVE
CALL NC,PARTIT
POP BC POP BC
INC C INC C
JR C,NX_DVCI
DJNZ NX_DVCI DJNZ NX_DVCI
;R02
;R02 LD A,#80
;R02 LD (DRV),A ; c=0 Initialization
;R02 LD C,SLOT3 ; INIT_H: PUSH IY
;R02 IN B,(C) ; LD HL,LOGDRV
;R02 LD A,SYSPAGE ; LD (OFFSECT),HL
;R02 OUT (C),A ; LD IX,DEVICE_CFG ;!FIXIT ­¥ § áà¥â «¨ ¯ ¬ïâì?
;R02 LD HL,IDE0 ; LD C,BIOS.DRV_LIST
;R02 CALL YEP_DRV ; RST ToBIOS
;R02 OUT (C),B ; XOR A
;R02 CALL NZ,PARTIT ; ;!TEST
;R02 ; ;LD B,(IX+2)
;R02 LD A,#81 ; ;CP B
;R02 LD (DRV),A ; CP (IX+2) ;HDD
;R02 LD C,SLOT3 ; JR Z,NO_HARDS
;R02 IN B,(C) ; LD BC,4*256 + #80 ;!HARDCODE 4 - ª®«¨ç¥á⢮ ¢¨­â®¢, 80 - ID ¢¨­â  ;!FIXIT
;R02 LD A,SYSPAGE ; ;LD C,#80 ;!HARDCODE 4 - ª®«¨ç¥á⢮ ¢¨­â®¢, 80 - ID ¢¨­â  ;!FIXIT
;R02 OUT (C),A
;R02 LD HL,IDE1 ; NX_DVCI: PUSH BC
;R02 CALL YEP_DRV ; LD A,C
;R02 OUT (C),B ; LD (DRV_NUM),A
;R02 CALL NZ,PARTIT ; LD C,BIOS.DRV_DETECT
; RST ToBIOS
; ;JR C,.NO_DRIVE
; CALL NC,PARTIT
; POP BC
; INC C
; ;JR C,NX_DVCI
; DJNZ NX_DVCI
;!FIXIT ---------------------------------------------------------------------------[^]
;
NO_HARDS: NO_HARDS:
POP IY POP IY
LD HL,(OFFSECT) LD HL,(OFFSECT)
@ -245,37 +289,21 @@ NO_HARDS:
SBC HL,DE SBC HL,DE
RET Z RET Z
LD DE,LD_DSK LD DE,LD_DSK
DRVCLC INC A DRVCLC: INC A
SBC HL,DE SBC HL,DE
JR NZ,DRVCLC JR NZ,DRVCLC
AND A AND A
RET RET
DEVICE_CFG EQU #4000 ;DEVICE_CFG EQU #4000 ;!TEST
;DEVICE_CFG EQU DRV_TEMP_BUFFER ;!TEST
; DB 0 ;LEN ; DB 0 ;LEN
; DB 0 ;FDD COUNT ; DB 0 ;FDD COUNT
; DB 0 ;HDD COUNT ; DB 0 ;HDD COUNT
; DB 0 ;CDROM COUNT ; DB 0 ;CDROM COUNT
; DS 28 ;RESERVED ; DS 28 ;RESERVED
YEP_DRV LD A,#FF
; CP (HL)
; RET NZ
INC HL
CP (HL)
RET NZ
INC HL
CP (HL)
RET NZ
INC HL
CP (HL)
RET NZ
INC HL
CP (HL)
RET NZ
INC HL
CP (HL)
RET
;+00 ;SECTORS PER TRACK ;+00 ;SECTORS PER TRACK
;+01 ;TRACKS PER CYLLINDER ;+01 ;TRACKS PER CYLLINDER
@ -286,40 +314,17 @@ YEP_DRV LD A,#FF
;+06 ;RESERVED ;+06 ;RESERVED
;+07 ;RESERVED ;+07 ;RESERVED
DRVHD_H EQU 0
SC_PT_H EQU 1
HEADS_H EQU 2
CYL_L_H EQU 3
CYL_H_H EQU 4
SPCLL_H EQU 5
SPCLH_H EQU 6
LOGDRV: BLOCK 16*LD_DSK,0 ;!FIXIT ¯¥à¥­¥á⨠ª ¡ãä¥à ¬ ¢ ª®­¥æ áâà ­¨æë
;IDE0 DB #FF ;DRIVE/HEAD REGISTER ;00
; DB #FF ;SECTORS PER TRACK ;01
; DB #FF ;HEADS ;02
; DB #FF ;CYLINDERS LOW ;03
; DB #FF ;CYLINDERS HIGH ;04
; DB #FF ;SECTOR PER CYLINDER LOW ;05
; DB #FF ;SECTOR PER CYLINDER HIGH ;06
; DB #FF ;RESERVED ;07
;IDE1 DB #FF ;DRIVE/HEAD REGISTER ;00
; DB #FF ;SECTORS PER TRACK ;01
; DB #FF ;HEADS ;02
; DB #FF ;CYLINDERS LOW ;03
; DB #FF ;CYLINDERS HIGH ;04
; DB #FF ;SECTOR PER CYLINDER LOW ;05
; DB #FF ;SECTOR PER CYLINDER HIGH ;06
; DB #FF ;RESERVED ;07
LOGDRV BLOCK 12*LD_DSK,0
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... ;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
;+01 LONG SECTOR OFFSET ;+01 LONG SECTOR OFFSET
;+05 LONG SIZE IN SECTORS ;+05 LONG SIZE IN SECTORS
;+09 FREE ;+09 FREE
;+15 ;+15
SELHDD PUSH DE .Size EQU $-LOGDRV
SELHDD: PUSH DE
PUSH BC PUSH BC
PUSH HL PUSH HL
LD L,A LD L,A
@ -349,8 +354,6 @@ SELHDD PUSH DE
; 80 - SET DEVICE PARAMETERS ; 80 - SET DEVICE PARAMETERS
; 81 - WRITE TRACK ; 81 - WRITE TRACK
; 82 - FORMAT TRACK ; 82 - FORMAT TRACK
IOCTL_H BIT 7,B IOCTL_H BIT 7,B
JR NZ,O_CTL_H JR NZ,O_CTL_H
INC B INC B
@ -400,14 +403,17 @@ HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
; DE' - HEADS ON PHISICAL DISK ; DE' - HEADS ON PHISICAL DISK
; BC' - SECTORS PER TRACK ON PHISICAL DISK ; BC' - SECTORS PER TRACK ON PHISICAL DISK
; A' - PHISICAL DRIVE NUMBER ; A' - PHISICAL DRIVE NUMBER
; A - DRIVE/HEAD REGISTER PHISICAL DISK ; A - DRIVE/HEAD REGISTER PHISICAL DISK:
; D0...D3 - "0" RESERVED (MAY BE OTHER) ; bit7 - reserved "1"
; D4 - DEVICE MASTER/SLAVE ; bit6 - ADDRESSING MODE LBA/CHS
; D5 - "1" RESERVED ; bit5 - reserved "1"
; D6 - ADDRESSING MODE LBA/CHS ; bit4 - DEVICE MASTER/SLAVE
; D7 - "1" RESERVED ; bit3 - reserved "0" (MAY BE OTHER)
; bit2 - reserved "0" (MAY BE OTHER)
HGETPRM EX DE,HL ; bit1 - reserved "0" (MAY BE OTHER)
; bit0 - Primary/Secondary Chanel
HGETPRM:
EX DE,HL
LD BC,#55AA LD BC,#55AA
AND A AND A
SBC HL,BC SBC HL,BC
@ -415,6 +421,8 @@ HGETPRM EX DE,HL
LD A,DSS_Error.drv.GENERAL_FAILURE LD A,DSS_Error.drv.GENERAL_FAILURE
SCF SCF
RET NZ RET NZ
PUSH IX
PUSH IY PUSH IY
LD H,0 LD H,0
ADD HL,HL ADD HL,HL
@ -423,55 +431,81 @@ HGETPRM EX DE,HL
ADD HL,HL ADD HL,HL
LD B,H LD B,H
LD C,L LD C,L
LD IY,LOGDRV ;!FIXIT ­ å७  âãâ ¨­¤¥ªá­ë©? LD IY,LOGDRV
ADD IY,BC ADD IY,BC
LD E,(IY+5)
LD D,(IY+6)
LD L,(IY+7)
LD H,(IY+8)
LD A,(IY+0) ;
LD C,A LD A,(IY+0) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
LD IY,SYS_PAGE.IDE_0 ;!TEST --------------------------------------------------------------------------------+
AND #0F PUSH IY
JR Z,GELH1 LD C,BIOS.DRV_GET_PAR
LD IY,SYS_PAGE.IDE_1 RST ToBIOS
CP 2
JR C,GELH1
LD IY,SYS_PAGE.IDE_2
JR Z,GELH1
LD IY,SYS_PAGE.IDE_3
GELH1 IN A,(SLOT3)
PUSH AF
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(IY+DRVHD_H) ;HDD/DRV
EXX
LD L,(IY+CYL_L_H) ;CYLINDER LOW
LD H,(IY+CYL_H_H) ;CYLINDER HIGH
LD E,(IY+HEADS_H) ;HEADS
LD D,0
LD C,(IY+SC_PT_H) ;SECTORS
LD B,0
EXX
EX AF,AF'
POP AF
OUT (SLOT3),A
LD A,C
EX AF,AF'
POP IY POP IY
LD A,DSS_Error.drv.INVALID_DRIVE
JR C,.error
EX DE,HL
LD C,E
LD E,D
LD D,0
LD A,B
LD B,D
EXX
;SECTORS ON LOGICAL DISK
LD E,(IY+5)
LD D,(IY+6)
LD L,(IY+7)
LD H,(IY+8)
;
EX AF,AF'
LD A,(IY+0) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
EX AF,AF'
; LD C,A
; LD IY,SYS_PAGE.IDE_0
; AND #0F
; JR Z,GELH1
; LD IY,SYS_PAGE.IDE_1
; CP 2
; JR C,GELH1
; LD IY,SYS_PAGE.IDE_2
; JR Z,GELH1
; LD IY,SYS_PAGE.IDE_3
; GELH1: IN A,(SLOT3)
; PUSH AF
; LD A,SYS_PAGE
; OUT (SLOT3),A
; LD A,(IY+HDD_INIT_TABLE.DRV_Flags) ;HDD/DRV
; EXX
; LD L,(IY+HDD_INIT_TABLE.CylinderNumberLow) ;CYLINDER LOW +
; LD H,(IY+HDD_INIT_TABLE.CylinderNumberHigh) ;CYLINDER HIGH +
; LD E,(IY+HDD_INIT_TABLE.HeadsNumber) ;HEADS +
; LD D,0
; LD C,(IY+HDD_INIT_TABLE.SectorsPerTrack) ;SECTORS +
; LD B,0
; EXX
; EX AF,AF'
; POP AF
; OUT (SLOT3),A
; LD A,C
; EX AF,AF'
;!TEST --------------------------------------------------------------------------------+
AND A
.error: POP IY
POP IX
RET
REMOV_H:
LD A,1
AND A AND A
RET RET
REMOV_H LD A,1 RESE_H: XOR A
AND A
RET RET
RESE_H XOR A STAT_H: XOR A
RET
STAT_H XOR A
RET RET
CHEK_H: CHEK_H:
@ -484,8 +518,7 @@ CHEK_H:
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
GBPB_H: PUSH IY
GBPB_H PUSH IY
PUSH DE PUSH DE
LD L,A LD L,A
LD H,0 LD H,0
@ -506,7 +539,7 @@ GBPB_H PUSH IY
LD A,(IY+0) LD A,(IY+0)
POP DE POP DE
POP IY POP IY
LD BC,#0155 LD BC,1*256 + BIOS.DRV_READ
RST ToBIOS RST ToBIOS
RET RET
@ -514,10 +547,11 @@ GBPB_H PUSH IY
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
; A'- PAGE ; A'- PAGE
; A - HDD NUMBER +#80
;READ SECTOR ;READ SECTOR
LREADH PUSH IY LREADH: PUSH IY
CALL SELHDD CALL SELHDD
LD C,#52 ; A - HDD NUMBER +128 LD C,BIOS.DRV_READ_LONG
RST ToBIOS RST ToBIOS
POP IY POP IY
RET RET
@ -526,10 +560,12 @@ LREADH PUSH IY
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
; A'- PAGE ; A'- PAGE
; A - HDD NUMBER +#80
;WRITE SECTOR ;WRITE SECTOR
LWRITEH PUSH IY LWRITEH:
PUSH IY
CALL SELHDD CALL SELHDD
LD C,#53 ; A - HDD NUMBER +128 LD C,BIOS.DRV_WRITE_LONG
RST ToBIOS RST ToBIOS
POP IY POP IY
RET RET
@ -537,10 +573,11 @@ LWRITEH PUSH IY
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
; A - HDD NUMBER +#80
;WRITE SECTOR ;WRITE SECTOR
WRITEH PUSH IY WRITEH: PUSH IY
CALL SELHDD CALL SELHDD
LD C,#56 ; A - HDD NUMBER +128 LD C,BIOS.DRV_WRITE
RST ToBIOS RST ToBIOS
POP IY POP IY
RET RET
@ -548,10 +585,11 @@ WRITEH PUSH IY
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
; A - HDD NUMBER +#80
;READ SECTOR ;READ SECTOR
READH PUSH IY READH: PUSH IY
CALL SELHDD CALL SELHDD
LD C,#55 ; A - HDD NUMBER +128 LD C,BIOS.DRV_READ
RST ToBIOS RST ToBIOS
POP IY POP IY
RET RET
@ -559,18 +597,20 @@ READH PUSH IY
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
; A - HDD NUMBER +#80
;CHECK SECTOR ;CHECK SECTOR
CHECKH PUSH IY CHECKH: PUSH IY
CALL SELHDD CALL SELHDD
LD C,#54 ; A - HDD NUMBER +128 LD C,BIOS.DRV_VERIFY
RST ToBIOS RST ToBIOS
POP IY POP IY
RET RET
;----------------- ;-----------------
EASYDOS EASYDOS:
MEDIDOS MEDIDOS:
HIGHDOS LD E,(IY+08) HIGHDOS:
LD E,(IY+08)
LD D,(IY+09) LD D,(IY+09)
LD L,(IY+10) LD L,(IY+10)
LD H,(IY+11) LD H,(IY+11)
@ -599,7 +639,7 @@ HIGHDOS LD E,(IY+08)
LD (IX+6),D LD (IX+6),D
LD (IX+7),L LD (IX+7),L
LD (IX+8),H LD (IX+8),H
LD A,(DRV) LD A,(DRV_NUM)
LD (IX+0),A LD (IX+0),A
LD DE,LD_DSK ; DSKITEM LD DE,LD_DSK ; DSKITEM
ADD IX,DE ADD IX,DE
@ -611,7 +651,7 @@ NXTPART LD DE,#10
AND A AND A
RET RET
PARTIT IN A,(SLOT3) PARTIT: IN A,(SLOT3)
PUSH AF PUSH AF
LD A,DSS_PAGE LD A,DSS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
@ -628,14 +668,14 @@ PARTIT2 LD (CURSECL),DE
LD (CURSECH),IX LD (CURSECH),IX
CALL LOADSEC CALL LOADSEC
;!TEST ;!TEST
RET C ;FOR IDE2..3 ;RET C ; for absent drive
; ;
LD HL,(PART+510) LD HL,(PART+510) ;!HARDCODE
LD DE,#AA55 LD DE,#AA55
AND A AND A
SBC HL,DE SBC HL,DE
JR NZ,NODEFIN JR NZ,NODEFIN
LD IY,PART+#01BE LD IY,PART+#01BE ;!HARDCODE
LD B,4 LD B,4
DOSAGA PUSH BC DOSAGA PUSH BC
LD A,(IY+4) LD A,(IY+4)
@ -670,8 +710,7 @@ NOEXTDS CP #0F
NODEFIN SCF NODEFIN SCF
RET RET
EXTDOS EXTDOS: LD HL,(EXTDOSL)
LD HL,(EXTDOSL)
LD DE,(EXTDOSH) LD DE,(EXTDOSH)
LD A,L LD A,L
OR H OR H
@ -701,13 +740,13 @@ LOADSEC PUSH IY
LD IX,(CURSECL) LD IX,(CURSECL)
LD HL,(CURSECH) LD HL,(CURSECH)
LD DE,PART LD DE,PART
LD A,(DRV_NUM)
LD BC,1*256 + BIOS.DRV_READ LD BC,1*256 + BIOS.DRV_READ
LD A,(DRV)
RST ToBIOS RST ToBIOS
POP IY POP IY
RET RET
DRV DB #00 ;PHISICAL DRIVE NUMBER DRV_NUM DB #00 ;PHISICAL DRIVE NUMBER. ­®¬¥à ¤¥¢ ©á  (#80/#81 - primary ¬ áâ¥à/á«¥©¢, #82/#83 - secondary ¬ áâ¥à/á«¥©¢)
CURSECL DW #0000 ;CURRENT SECTOR LOADED CURSECL DW #0000 ;CURRENT SECTOR LOADED
CURSECH DW #0000 CURSECH DW #0000

View File

@ -247,7 +247,8 @@ CHEK_RD LD A,#FF
RET RET
;DE - ADDRESS ;DE - ADDRESS
GBPB_RD LD IX,0 GBPB_RD:
LD IX,0
LD HL,0 LD HL,0
LD B,#01 LD B,#01
;JP READ_RD ;JP READ_RD
@ -329,7 +330,6 @@ INIT_RD:
LD (DE),A LD (DE),A
INC DE INC DE
JP 1F JP 1F
.noDRV: POP BC .noDRV: POP BC
1: INC B 1: INC B
LD A,RAMDTBL.Size / 2 LD A,RAMDTBL.Size / 2

View File

@ -116,6 +116,9 @@
; EX (SP),HL ; EX (SP),HL
; RET ; RET
;!FIXIT ¯®¯¥à¥¤¥«ë¢ âì âã⠢맮¢ë ç¥à¥§ â®çª¨ ¢å®¤  ⨯  RST ¨«¨ ¢ë§®¢ë ⨯  LD C,0 : CALL HDDRIVE ­  ¯àï¬ë¥
;------------------------------------------------- ;-------------------------------------------------
; RST 18h. ‚¥ªâ®à ¤¨áª®¢ëå ãáâனá⢠; RST 18h. ‚¥ªâ®à ¤¨áª®¢ëå ãáâனáâ¢
; ¢å®¤: a=­®¬¥à ãáâனá⢠ (0-25) ; ¢å®¤: a=­®¬¥à ãáâனá⢠ (0-25)
@ -159,7 +162,7 @@ NODEV: POP BC
PDEVICE DW DEVICE PDEVICE DW DEVICE
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*3,#FF DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*3,#FF
.End: DB #FF .Size: DB #FF
FLOPPY EQU #0001 FLOPPY EQU #0001
FIXED EQU #0002 FIXED EQU #0002
@ -191,33 +194,30 @@ NETWORK EQU #0008
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;R01 ;R01
INITDVC_RET_DRIVE: ; INITDVC_RET_DRIVE:
CALL INITDVC ; CALL INITDVC
LD A,(LDRIVE) ; LD A,(DRV_PAGE.LDRIVE)
AND A ; AND A
RET ; RET
; ;
;----------------------------------------------------------- ;-----------------------------------------------------------
; <20>à®áª ­¨à®¢ âì á¨á⥬㠭  FDD/HDD ¤¥¢ ©áë ¨ RAM-¤¨áª¨ ; <20>à®áª ­¨à®¢ âì á¨á⥬㠭  FDD/HDD ¤¥¢ ©áë ¨ RAM-¤¨áª¨
;----------------------------------------------------------- ;-----------------------------------------------------------
INITDVC: XOR A INITDVC: XOR A
LD (LDRIVE),A ; á¡à. ï祩ªã LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
LD HL,DEVICE LD HL,DEVICE
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
; FDD ¤¥¢ ©áë ; FDD ¤¥¢ ©áë
LD C,A CALL FDDRIVE.INIT ; ã§­ âì ç¨á«® FDD-¤¥¢ ©á®¢
CALL FDDRIVE ; ã§­ âì ç¨á«® FDD-¤¥¢ ©á®¢
LD DE,FDDRIVE ;  ¤à¥á ®¡à ¡®â稪  ⥪. ¤¥¢ ©á  LD DE,FDDRIVE ;  ¤à¥á ®¡à ¡®â稪  ⥪. ¤¥¢ ©á 
CALL MAKEDVC ; ¨­¨æ. â ¡«¨æã ¯¥à¥å®¤®¢ CALL MAKEDVC ; ¨­¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
; HDD ¤¥¢ ©áë ; HDD ¤¥¢ ©áë
LD C,0 .if_old: CALL INIT_H ; ¥á«¨ ­  áâ à⥠¢¥àá¨ï BIOS ­¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦­® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥­  ª®¤  ­  XOR A : RET
CALL HDDRIVE
LD DE,HDDRIVE LD DE,HDDRIVE
CALL MAKEDVC CALL MAKEDVC
; RAM-¤¨áª¨ ; RAM-¤¨áª¨
LD C,0 CALL INIT_RD
CALL RMDRIVE
LD DE,RMDRIVE LD DE,RMDRIVE
CALL MAKEDVC CALL MAKEDVC
XOR A XOR A
@ -227,7 +227,7 @@ INITDVC: XOR A
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪  ¤¥¢ ©á  ; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪  ¤¥¢ ©á 
; a=ç¨á«® ¤¥¢ ©á®¢ (0=­¥â) ; a=ç¨á«® ¤¥¢ ©á®¢ (0=­¥â)
MAKEDVC: LD C,A MAKEDVC: LD C,A
LD HL,LDRIVE ; ï祩ª  ­®¬¥à  ¯®á«. ¤¨áª  LD HL,DRV_PAGE.LDRIVE ; ï祩ª  ­®¬¥à  ¯®á«. ¤¨áª 
ADD A,(HL) ADD A,(HL)
LD (HL),A LD (HL),A
LD A,C LD A,C
@ -235,7 +235,7 @@ MAKEDVC: LD C,A
OR A OR A
RET Z ; ­¥â ¤¥¢ ©á®¢ RET Z ; ­¥â ¤¥¢ ©á®¢
LD HL,(PDEVICE) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥ LD HL,(PDEVICE) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥
.loop: LD (HL),C ; ­®¬¥à ¤à ©¢  í⮣® ãáâனá⢠ (¬« ¤è¨¥ 4 ¡¨â ). <20> ¯à¨¬¥à, ¤«ï HDD #81: #80 - ⨯ ¤à ©¢ , 1 - ­®¬¥à ¤à ©¢  .loop: LD (HL),C ; ­®¬¥à «®£.¤à ©¢  í⮣® ãáâனá⢠
INC HL INC HL
LD (HL),E ; de= ¤à¥á ®¡à ¡®â稪  LD (HL),E ; de= ¤à¥á ®¡à ¡®â稪 
INC HL INC HL
@ -269,5 +269,4 @@ MAKEDVC: LD C,A
; DW HDDRIVE ; HDD I ; DW HDDRIVE ; HDD I
; DB #07 ; DB #07
; DW HDDRIVE ; HDD J ; DW HDDRIVE ; HDD J
; DB #FF ; DB #FF

View File

@ -12,7 +12,7 @@
;--------------------------------------------------------------- ;---------------------------------------------------------------
; CLEAR TEXT WINDOW ; CLEAR TEXT WINDOW
CLEAR LD C,BIOS.LP_CLS_WIN2 CLEAR: LD C,BIOS.LP_CLS_WIN2
RST ToBIOS RST ToBIOS
AND A AND A
RET RET
@ -20,7 +20,7 @@ CLEAR LD C,BIOS.LP_CLS_WIN2
; PRINT NULL-TERMINATED CHARS STRING ; PRINT NULL-TERMINATED CHARS STRING
; HL - STRING POINTER ; HL - STRING POINTER
PCHARS LD A,(HL) PCHARS: LD A,(HL)
INC HL INC HL
OR A OR A
RET Z RET Z

View File

@ -1 +1 @@
43 114

View File

@ -12,11 +12,13 @@
DEFINE TABisSPACES 1 DEFINE TABisSPACES 1
DEFINE CLASSIC_CURSOR 0 DEFINE CLASSIC_CURSOR 0
DEFINE SAVE_PATH_MACRO 0 DEFINE SAVE_PATH_MACRO 0
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
; ;
;-------------------[MEMORY]-------------------------; ;-------------------[MEMORY]-------------------------;
DEFINE USING_MEMPAGES 4 DEFINE USING_MEMPAGES 4
DEFINE OLD_SET_BANK 0 DEFINE OLD_SET_BANK 0
PORTAL.RSTx18_SWITCH_ADDRESS #82
; ªíè ᯨ᪠ ª â «®£  ; ªíè ᯨ᪠ ª â «®£ 
DIRPAGE EQU 0 DIRPAGE EQU 0
FATPAGE EQU 1 FATPAGE EQU 1

@ -1 +1 @@
Subproject commit 94cb0e39f321bd11519008801187d93eacb280f2 Subproject commit b25c3779d6af8abc2970d3a9a55006f43292c86e