mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-17 18:30:35 +03:00
промежуточный
This commit is contained in:
parent
f4140a5733
commit
c50040b715
@ -27,7 +27,7 @@ CDRIVE EQU #02
|
||||
DRIVE: _mSYSID
|
||||
DI
|
||||
LD (DRIVE),A
|
||||
LD C,BIOS.EXT_VERSION
|
||||
LD C,BIOS.DRV_VERSION
|
||||
RST ToBIOS_18
|
||||
LD A,INCORR
|
||||
JR C,FAIL
|
||||
@ -35,7 +35,7 @@ DRIVE: _mSYSID
|
||||
BIT 7,A
|
||||
JR Z,GOOD_DRIVE
|
||||
EX DE,HL
|
||||
LD DE,#0215 ; ¥á«¨ ¢¥àá¨ï ¨¦¥ 2.21, â® ®è¨¡ª
|
||||
LD DE,2*256 + 21 ; ¥á«¨ ¢¥àá¨ï ¨¦¥ 2.21, â® ®è¨¡ª
|
||||
SBC HL,DE
|
||||
LD A,INCORR
|
||||
JR C,FAIL
|
||||
@ -47,7 +47,7 @@ GOOD_DRIVE:
|
||||
LD A,(DRIVE)
|
||||
RST ToBIOS_18
|
||||
JR C,NULL
|
||||
JP CONTINU
|
||||
JP CONTINUE
|
||||
|
||||
FAIL CALL MESSAGE
|
||||
NULL LD A,FAILURE
|
||||
@ -131,7 +131,7 @@ STARTDO EQU 6
|
||||
; 0 10 20 30 40 50 60 70 80
|
||||
MSG0: DB 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 "Invalid partition table.",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
|
||||
MSGE DB 0
|
||||
|
||||
CONTINU
|
||||
CONTINUE:
|
||||
LD HL,0
|
||||
LD (DISKL),HL
|
||||
LD (DISKH),HL
|
||||
@ -178,7 +178,7 @@ CONTINU
|
||||
LD A,(DRIVE)
|
||||
LD C,#00
|
||||
RST #10
|
||||
jp c,XFAIL
|
||||
jp c,XFAIL.fail
|
||||
|
||||
LD A,STARTDO
|
||||
CALL DOSMESS
|
||||
@ -198,7 +198,7 @@ CONTINU
|
||||
LD A,(DRIVE)
|
||||
LD C,#00
|
||||
RST #10
|
||||
jp c,XFAIL
|
||||
jp c,XFAIL.fail
|
||||
ENDIF
|
||||
|
||||
LD A,STARTDO
|
||||
@ -238,14 +238,14 @@ DOSMESS CALL FMESAGE
|
||||
RST #10
|
||||
RET
|
||||
|
||||
XFAIL CALL DOSMESS
|
||||
LD A,FAILURE
|
||||
XFAIL: CALL DOSMESS
|
||||
.fail: LD A,FAILURE
|
||||
CALL DOSMESS
|
||||
DI
|
||||
HALT
|
||||
.halt JR .halt
|
||||
.halt: JR .halt
|
||||
|
||||
PART_TB PUSH BC
|
||||
PART_TB: PUSH BC
|
||||
LD HL,(BOOT+510)
|
||||
LD DE,#AA55
|
||||
AND A
|
||||
@ -253,7 +253,7 @@ PART_TB PUSH BC
|
||||
JR NZ,ERRP
|
||||
LD IX,BOOT+#01BE
|
||||
LD B,4
|
||||
DOSAGA LD A,(IX+4)
|
||||
DOSAGA: LD A,(IX+4)
|
||||
CP #0E
|
||||
JR Z,YEPDOS
|
||||
CP 6
|
||||
@ -263,14 +263,12 @@ DOSAGA LD A,(IX+4)
|
||||
CP 1
|
||||
JR Z,YEPDOS
|
||||
LD DE,#10
|
||||
; ®è¨¡ª ¢ ®à¨£¨ «¥
|
||||
; ADD IY,DE
|
||||
ADD IX,DE
|
||||
DJNZ DOSAGA
|
||||
ERRP LD A,ERRPART
|
||||
ERRP: LD A,ERRPART
|
||||
JP FAIL
|
||||
|
||||
YEPDOS LD E,(IX+08)
|
||||
YEPDOS: LD E,(IX+08)
|
||||
LD D,(IX+09)
|
||||
LD L,(IX+10)
|
||||
LD H,(IX+11)
|
||||
@ -278,15 +276,15 @@ YEPDOS LD E,(IX+08)
|
||||
LD XL,E
|
||||
LD (DISKL),IX
|
||||
LD (DISKH),HL
|
||||
LD A,(DRIVE)
|
||||
LD DE,BOOT
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
LD A,(DRIVE)
|
||||
RST ToBIOS_18
|
||||
POP BC
|
||||
LD A,C
|
||||
RET
|
||||
|
||||
SET_PRM PUSH BC
|
||||
SET_PRM: PUSH BC
|
||||
LD A,B
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS_18
|
||||
@ -300,7 +298,7 @@ SET_PRM PUSH BC
|
||||
LD A,C
|
||||
RET
|
||||
|
||||
GET_BPB LD IX,#0000
|
||||
GET_BPB: LD IX,#0000
|
||||
LD HL,#0000
|
||||
LD DE,BOOT
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
@ -315,7 +313,7 @@ GET_BPB LD IX,#0000
|
||||
JR NZ,NX1
|
||||
CALL PART_TB ;HDD
|
||||
RET C
|
||||
NX1 CP #00
|
||||
NX1: CP #00
|
||||
JR NZ,NX2
|
||||
CALL SET_PRM ;FDD
|
||||
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 D,(IY+_sBOOT_SEC.S_P_F+1)
|
||||
LD A,(BOOT.FAT_NUM) ;amount FATs
|
||||
C_DATA1 ADD HL,DE
|
||||
C_DATA1: ADD HL,DE
|
||||
DEC A
|
||||
JR NZ,C_DATA1
|
||||
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 HL,0
|
||||
LD A,(BOOT.S_P_C)
|
||||
NEXTAD3
|
||||
NEXTAD3:
|
||||
ADD HL,BC ;calc. cluster size
|
||||
DEC A
|
||||
JR NZ,NEXTAD3
|
||||
@ -371,16 +369,16 @@ NEXTAD3
|
||||
LD HL,BOOT.ID_FAT
|
||||
LD DE,FATMSG
|
||||
LD B,3
|
||||
R_BPBL1
|
||||
R_BPBL1:
|
||||
LD A,(DE)
|
||||
CP (HL)
|
||||
JP NZ,IBMDOS_
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ R_BPBL1
|
||||
FID LD A,(HL)
|
||||
FID: LD A,(HL)
|
||||
INC HL
|
||||
CP #20
|
||||
CP " "
|
||||
JR Z,FID
|
||||
CP "1"
|
||||
SCF
|
||||
@ -425,12 +423,12 @@ IBMDOS_ LD A,(IY+_sBOOT_SEC.ID_FORM)
|
||||
LD HL,#0FFF
|
||||
JR BPB_FAT
|
||||
|
||||
GETROOT LD HL,(DIR_FRH)
|
||||
GETROOT: LD HL,(DIR_FRH)
|
||||
LD IX,(DIR_FRL)
|
||||
LD BC,(DISKL)
|
||||
LD DE,(DISKH)
|
||||
LD A,(DIR_S_S)
|
||||
NEXTSEC PUSH AF
|
||||
NEXTSEC: PUSH AF
|
||||
ADD IX,BC
|
||||
ADC HL,DE
|
||||
;HL:IX
|
||||
@ -454,9 +452,9 @@ NEXTSEC PUSH AF
|
||||
SCF
|
||||
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
|
||||
SKIPNAM LD DE,#0020
|
||||
SKIPNAM: LD DE,#0020
|
||||
ADD IX,DE
|
||||
DEC C
|
||||
RET Z
|
||||
@ -473,7 +471,7 @@ SKIPNAM LD DE,#0020
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD B,11
|
||||
SEARCH2 LD A,(DE)
|
||||
SEARCH2: LD A,(DE)
|
||||
CP (HL)
|
||||
JR NZ,SKIPNAM
|
||||
INC HL
|
||||
@ -491,14 +489,13 @@ SEARCH2 LD A,(DE)
|
||||
|
||||
; HL - CLUSTER
|
||||
; DE - ADDRESS
|
||||
|
||||
FLOAD LD (READMEM),DE
|
||||
LD_FILE PUSH HL
|
||||
FLOAD: LD (READMEM),DE
|
||||
LD_FILE: PUSH HL
|
||||
CALL NSECTOR
|
||||
LD DE,(READMEM)
|
||||
LD A,(BOOT.S_P_C)
|
||||
CP #20
|
||||
JR C,SMCLUS
|
||||
JR C,SMALL_CLUSTER
|
||||
LD BC,#20*256 + BIOS.DRV_READ_LONG
|
||||
LD A,(BANKDOS)
|
||||
EX AF,AF'
|
||||
@ -507,8 +504,8 @@ LD_FILE PUSH HL
|
||||
POP HL
|
||||
AND A
|
||||
RET
|
||||
|
||||
SMCLUS LD B,A
|
||||
SMALL_CLUSTER:
|
||||
LD B,A
|
||||
LD C,BIOS.DRV_READ_LONG
|
||||
LD A,(BANKDOS)
|
||||
EX AF,AF'
|
||||
|
||||
@ -25,13 +25,13 @@
|
||||
MACRO _mEXEinfo
|
||||
BLOCK 10,' ' ; ‚ëà ¢¨¢ ¨¥ ¤«ï ªà ᨢ®£® ®â®¡à ¦¥¨ï ¢ HEX
|
||||
BYTE ' Bootloader '
|
||||
BYTE ' installer '
|
||||
BYTE ' installer '
|
||||
BYTE ' for DSS. '
|
||||
BYTE ' Vasil Ivanov, '
|
||||
BYTE ' Anatoliy '
|
||||
BYTE ' Belyanskiy. '
|
||||
BYTE ' Sprinter Team, '
|
||||
BYTE ' 2023 '
|
||||
BYTE ' 2023 '
|
||||
ENDM
|
||||
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
;=====================================================================[]
|
||||
;Rev. Date Name Description
|
||||
;---------------------------------------------------------------------[]
|
||||
;R12 23-07-2023 BAO „®¡ ¢«¥ ª®¬ ¤ REBOOT - ¯¥à¥§ £à㧪 á ¯®«®© ®ç¨á⪮© ¯ ¬ïâ¨
|
||||
;R11 20-07-2023 BAO <09>®¯à ¢«¥ äãªæ¨ï LCPIR ¤«ï ª®à४⮣® ¢ë¡®à á®®¡é¥¨ï ®¡ ®è¨¡ª¥ ¯à¨ ®¬¥à¥ ®è¨¡ª¨ > § £®â®¢«¥ëå á®®¡é¥¨©
|
||||
;R10 16-05-2023 BAO TE•T MODE AND TEXT ARE RESTORED AFTER RETURNING FROM THE APP
|
||||
;R09 ??-??-???? DNS ;????? ????
|
||||
@ -532,26 +533,27 @@ RUN_BAT CALL BATCH
|
||||
BATLIST DZ 'PAUSE' : DW CPAUSE
|
||||
DZ 'REM' : DW CREM
|
||||
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 '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 'MD' : DW CMKDIR
|
||||
DZ 'REN' : DW CRENAM
|
||||
DZ 'RENAME' : DW CRENAM
|
||||
DZ 'DEL' : DW CDELET
|
||||
DZ 'RD' : DW CRMDIR
|
||||
DZ 'RMDIR' : DW CRMDIR
|
||||
DZ 'SET' : DW CSET
|
||||
DZ 'TIME' : DW CTIME
|
||||
DZ 'VERSION' : DW VERS
|
||||
DZ 'DATE' : DW CDATE
|
||||
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
|
||||
|
||||
CLS LD DE,#0000
|
||||
@ -1780,9 +1782,21 @@ QUIT: LD B,0
|
||||
RST ToDSS
|
||||
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
|
||||
LD HL,ERR0
|
||||
LD BC,ERR1-ERR0
|
||||
LD BC,ERR0.Size
|
||||
CALL LCPIR
|
||||
CALL PRINTZ
|
||||
CALL CRLF
|
||||
@ -1795,7 +1809,7 @@ MESSAGE: CALL FMESAGE
|
||||
|
||||
FMESAGE: INC DE
|
||||
LD HL,MSG0
|
||||
LD BC,MSG1-MSG0
|
||||
LD BC,MSG0.Size
|
||||
LCPIR: XOR A
|
||||
CPIR
|
||||
RET PO
|
||||
@ -1903,75 +1917,74 @@ MSG0: DB 0
|
||||
; FILENAME EXT SIZE DATE TIME
|
||||
DB "%1 %2 %3 %4 %5",CR,LF,0
|
||||
DB "COMMANDS:",CR,LF,CR,LF
|
||||
DB "CD DEL HELP RD SET "
|
||||
DB " ",CR,LF
|
||||
DB "CHDIR DIR MD REN TIME "
|
||||
DB " ",CR,LF
|
||||
DB "CLS ERASE MKDIR RENAME VER "
|
||||
DB " ",CR,LF
|
||||
DB "DATE EXIT PATH RMDIR VERSION "
|
||||
DB " ",CR,LF
|
||||
DB 0
|
||||
MSG1:
|
||||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
||||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
|
||||
;R11
|
||||
BYTE 0
|
||||
DZ "Unknown command"
|
||||
;
|
||||
.Size EQU $-MSG0
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT äãªæ¨ï ¢ë§ë¢ îé ï ¢ë¢®¤ ®è¨¡ª¨ ¤¥« ¥â ¢ ç «¥ 䨫ìâà ¯® ®¬¥à ¬ ¨ ¥áª®«ìª® ¯¥à¢ëå ®â訢 îâáï
|
||||
ERR0 DB #00
|
||||
DZ "Bad command or file name"
|
||||
DZ "Invalid function" ; 01 - ¥¢¥àë© ®¬¥à äãªæ¨¨
|
||||
DZ "Invalid drive number" ; 02 - ¥¯à ¢¨«ìë© ®¬¥à ãáâனáâ¢
|
||||
DZ "File not found" ; 03 - ä ©« ¥ ®¡ à㦥
|
||||
DZ "Path not found" ; 04 - ¥¢¥àë© ¯ãâì
|
||||
DZ "Invalid handle" ; 05 - ¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
DZ "No free filehandle" ; 06 - ¥â ᢮¡®¤®£® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||
DZ "File exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
|
||||
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥨ï
|
||||
DZ "Root overflow" ; 09 - ¯¥à¥¯®«¥¨¥ ROOT (ª®à¥¢®£® ª â «®£ )
|
||||
DZ "No free space" ; 10 - ¥â ᢮¡®¤®£® ¬¥áâ ¤¨áª¥
|
||||
DZ "Directory not empty" ; 11 - ª â «®£ ¥ ¯ãáâ
|
||||
DZ "Can't delete current directory" ; 12 - ¥ã¤ ç ï ¯®¯ë⪠㤠«¨âì ⥪ã騩 ª â «®£
|
||||
DZ "Invalid media" ; 13 - ¥¨§¢¥áâë© ä®à¬ â
|
||||
DZ "Unknown operation" ;R02 ; 14 - ¥¢®§¬®¦ ï ®¯¥à æ¨ï
|
||||
DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì
|
||||
DZ "Invalid filename" ; 16 - ¥¢¥à®¥ ¨¬ï
|
||||
DZ "Invalid EXE-file" ; 17 - ¥¯à ¢¨«ìë© EXE-ä ©«
|
||||
DZ "Not supported EXE-file" ; 18 - ¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©«
|
||||
DZ "Access denied" ; 19 - à¥áãàá ¥ ¤®áâ㯥
|
||||
DZ "Not ready" ; 20 - ¥â £®â®¢®áâ¨
|
||||
DZ "Seek error" ; 21 - ®è¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï
|
||||
DZ "Sector not found" ; 22 - ᥪâ®à ¥ ©¤¥
|
||||
DZ "CRC error" ; 23 - ®è¨¡ª CRC
|
||||
DZ "Write protect" ; 24 - § é¨â § ¯¨á¨
|
||||
DZ "Read error" ; 25 - ®è¨¡ª ç⥨ï
|
||||
DZ "Write error" ; 26 - ®è¨¡ª § ¯¨á¨
|
||||
DZ "Drive failure" ; 27 - á¡®© ¤¨áª
|
||||
DZ "Extended error 28"
|
||||
DZ "Extended error 29"
|
||||
DZ "No free memory" ; 30 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||||
DZ "Invalid memory block" ; 31 - ¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
|
||||
DZ "Extended error 32"
|
||||
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ëè¥ ¬ ªá¨¬ «ìë© à §¬¥à ¯¥à¥¬¥®©
|
||||
DZ "Extended error 34"
|
||||
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
|
||||
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
|
||||
DZ "Operation interrupted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬
|
||||
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª
|
||||
DZ "Unexpected application termination" ; 39 - unexpected application termination / ¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à¨«®¦¥¨ï
|
||||
DZ "40"
|
||||
DZ "41"
|
||||
DZ "42"
|
||||
DZ "43"
|
||||
DZ "44"
|
||||
DZ "45"
|
||||
DZ "46"
|
||||
DZ "Wrong video mode" ; 48 - ¥¯à ¢¨«ìë© ¢¨¤¥®à¥¦¨¬
|
||||
DZ "48"
|
||||
DZ "49"
|
||||
DZ "50"
|
||||
ERR0: DB #00
|
||||
DZ "Bad command or file name"
|
||||
DZ "Invalid function" ; 01 - ¥¢¥àë© ®¬¥à äãªæ¨¨
|
||||
DZ "Invalid drive number" ; 02 - ¥¯à ¢¨«ìë© ®¬¥à ãáâனáâ¢
|
||||
DZ "File not found" ; 03 - ä ©« ¥ ®¡ à㦥
|
||||
DZ "Path not found" ; 04 - ¥¢¥àë© ¯ãâì
|
||||
DZ "Invalid handle" ; 05 - ¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
DZ "No free filehandle" ; 06 - ¥â ᢮¡®¤®£® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||
DZ "File exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
|
||||
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥨ï
|
||||
DZ "Root overflow" ; 09 - ¯¥à¥¯®«¥¨¥ ROOT (ª®à¥¢®£® ª â «®£ )
|
||||
DZ "No free space" ; 10 - ¥â ᢮¡®¤®£® ¬¥áâ ¤¨áª¥
|
||||
DZ "Directory not empty" ; 11 - ª â «®£ ¥ ¯ãáâ
|
||||
DZ "Can't delete current directory" ; 12 - ¥ã¤ ç ï ¯®¯ë⪠㤠«¨âì ⥪ã騩 ª â «®£
|
||||
DZ "Invalid media" ; 13 - ¥¨§¢¥áâë© ä®à¬ â
|
||||
DZ "Unknown operation" ;R02 ; 14 - ¥¢®§¬®¦ ï ®¯¥à æ¨ï
|
||||
DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì
|
||||
DZ "Invalid filename" ; 16 - ¥¢¥à®¥ ¨¬ï
|
||||
DZ "Invalid EXE-file" ; 17 - ¥¯à ¢¨«ìë© EXE-ä ©«
|
||||
DZ "Not supported EXE-file" ; 18 - ¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©«
|
||||
DZ "Access denied" ; 19 - à¥áãàá ¥ ¤®áâ㯥
|
||||
DZ "Not ready" ; 20 - ¥â £®â®¢®áâ¨
|
||||
DZ "Seek error" ; 21 - ®è¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï
|
||||
DZ "Sector not found" ; 22 - ᥪâ®à ¥ ©¤¥
|
||||
DZ "CRC error" ; 23 - ®è¨¡ª CRC
|
||||
DZ "Write protect" ; 24 - § é¨â § ¯¨á¨
|
||||
DZ "Read error" ; 25 - ®è¨¡ª ç⥨ï
|
||||
DZ "Write error" ; 26 - ®è¨¡ª § ¯¨á¨
|
||||
DZ "Drive failure" ; 27 - á¡®© ¤¨áª
|
||||
DZ "Extended error 28"
|
||||
DZ "Extended error 29"
|
||||
DZ "No free memory" ; 30 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||||
DZ "Invalid memory block" ; 31 - ¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
|
||||
DZ "Extended error 32"
|
||||
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ëè¥ ¬ ªá¨¬ «ìë© à §¬¥à ¯¥à¥¬¥®©
|
||||
DZ "Extended error 34"
|
||||
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
|
||||
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
|
||||
DZ "Operation interrupted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬
|
||||
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª
|
||||
DZ "Unexpected application termination" ; 39 - unexpected application termination / ¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à¨«®¦¥¨ï
|
||||
DZ "40"
|
||||
DZ "41"
|
||||
DZ "42"
|
||||
DZ "43"
|
||||
DZ "44"
|
||||
DZ "45"
|
||||
DZ "46"
|
||||
DZ "Wrong video mode" ; 48 - ¥¯à ¢¨«ìë© ¢¨¤¥®à¥¦¨¬
|
||||
DZ "48"
|
||||
DZ "49"
|
||||
DZ "50"
|
||||
;R11
|
||||
BYTE 0 ; ®£à ¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥¨© ¢ë¤ ¢ «®áì ®¡é¥¥:
|
||||
DZ "Unknown error"
|
||||
DB 0 ; ®£à ¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥¨© ¢ë¤ ¢ «®áì ®¡é¥¥:
|
||||
DZ "Unknown error"
|
||||
;
|
||||
ERR1:
|
||||
.Size EQU $-ERR0
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
GETPATH:
|
||||
|
||||
@ -1411,7 +1411,7 @@ SETTIME PUSH IX
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD C,#F5
|
||||
LD C,BIOS.CMOS_TEST
|
||||
RST ToBIOS
|
||||
JP C,NOCMOS2
|
||||
POP AF
|
||||
|
||||
278
DSS/DRV-MAIN.ASM
278
DSS/DRV-MAIN.ASM
@ -6,15 +6,25 @@
|
||||
;---------------------------------------------------------------
|
||||
;R00 2003-03-19 DNS Initial version
|
||||
;---------------------------------------------------------------
|
||||
// INCLUDE "hardware.inc"
|
||||
// INCLUDE "bios.inc"
|
||||
|
||||
|
||||
; ORG #0000
|
||||
|
||||
MODULE DRV ; !FIXIT ®¡®©â¨áì ¡¥§ ¬®¤ã«ï
|
||||
;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
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[NOT USED]> ;
|
||||
@ -32,7 +42,7 @@ RST_00:
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[BIOS API]> ;
|
||||
BLOCK 8-$,#FF ;
|
||||
BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode
|
||||
A0008: PUSH AF ;
|
||||
LD A,SYS_PORT.PAGE8;
|
||||
OUT (SYS_PORT.ON),A ;
|
||||
@ -44,35 +54,35 @@ A0008: PUSH AF ;
|
||||
;!FIXIT
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[DSS API]> ;
|
||||
BLOCK #10-$,#FF ;
|
||||
A0010: ;JP RST_10 ;
|
||||
BLOCK #10-$,#C7 ; #C7 - "RST 0" opcode
|
||||
A0010: ;JP DRV_PAGE.RST_10 ;
|
||||
DI : HALT ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[DRIVE API]> ;
|
||||
BLOCK #18-$,#FF ;
|
||||
;A0018 JP INTDISK ;
|
||||
A0018: PUSH AF ;
|
||||
PUSH BC ;
|
||||
MAIN_PG_NUMBER+2: ;
|
||||
LD BC,0*256 + SLOT0 ; !FIXIT áî¤ ¥ ¤®«¦ë ¢áâ ¢«ïâìáï ®¬¥à ¢ë¤¥«¥ëå áâà ¨æ?
|
||||
JP PORTAL.outDRV ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; ; <[DRIVE API]> ;
|
||||
; BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode
|
||||
; ;A0018 JP INTDISK ;
|
||||
; A0018: PUSH AF ;
|
||||
; PUSH BC ;
|
||||
; DRV_PAGE.MAIN_PAGE_NUMBER+2: ;
|
||||
; LD BC,0*256 + SLOT0 ; !FIXIT áî¤ ¥ ¤®«¦ë ¢áâ ¢«ïâìáï ®¬¥à ¢ë¤¥«¥ëå áâà ¨æ?
|
||||
; JP PORTAL.outDRV ;
|
||||
; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
;!TODO
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[NOT USED]> ;
|
||||
BLOCK #20-$,#FF ;
|
||||
A0020: JP RST_20 ;
|
||||
BLOCK #20-$,#C7 ; #C7 - "RST 0" opcode
|
||||
A0020: JP DRV_PAGE.RST_20 ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
;
|
||||
RST_20:
|
||||
DRV_PAGE.RST_20:
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
RET
|
||||
@ -81,13 +91,13 @@ RST_20:
|
||||
;!TODO
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[NOT USED]> ;
|
||||
BLOCK #28-$,#FF ;
|
||||
A0028: JP RST_28 ;
|
||||
BLOCK #28-$,#C7 ; #C7 - "RST 0" opcode
|
||||
A0028: JP DRV_PAGE.RST_28 ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
;
|
||||
RST_28:
|
||||
DRV_PAGE.RST_28:
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
RET
|
||||
@ -96,7 +106,7 @@ RST_28:
|
||||
;!TODO
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[NOT USED]> ;
|
||||
BLOCK #30-$,#FF ;
|
||||
BLOCK #30-$,#C7 ;
|
||||
A0030: JP RST_30 ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
@ -111,7 +121,7 @@ RST_30:
|
||||
;!FIXIT
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[MAIN INT]> ;
|
||||
BLOCK #38-$,#FF ;
|
||||
BLOCK #38-$,#C7 ;
|
||||
A0038: ;
|
||||
; JP RST_38 ;
|
||||
; RST_38: ;
|
||||
@ -148,56 +158,51 @@ A0038: ;
|
||||
;
|
||||
|
||||
;
|
||||
KEYSCAN: RET ;!FIXIT
|
||||
DRV_PAGE.KEYSCAN: RET ;!FIXIT
|
||||
;
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[ NMI ]> ;
|
||||
NMI: RETN ;
|
||||
BLOCK #66-$,#FF ;
|
||||
A0066: JP NMI ;
|
||||
DRV_PAGE.NMI: RETN ;
|
||||
BLOCK #66-$,#C7;
|
||||
A0066: JP DRV_PAGE.NMI ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
|
||||
;-------------------------------;
|
||||
;ADRST10 EQU #00 ;!!!!!
|
||||
;ADRST10 EQU #00 ; ;!!!!!
|
||||
;-------------------------------;
|
||||
;!FIXIT
|
||||
RST_10 PUSH HL
|
||||
LD L,C
|
||||
LD H,ADRST10/256
|
||||
LD C,(HL)
|
||||
INC H
|
||||
LD H,(HL)
|
||||
LD L,C
|
||||
EX (SP),HL
|
||||
RET
|
||||
; DRV_PAGE.RST_10:
|
||||
; PUSH HL
|
||||
; LD L,C
|
||||
; LD H,ADRST10/256
|
||||
; LD C,(HL)
|
||||
; INC H
|
||||
; LD H,(HL)
|
||||
; LD L,C
|
||||
; EX (SP),HL
|
||||
; RET
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[DRIVE PAGE SWITCH]> ;
|
||||
BLOCK #7E-$,0 ;
|
||||
PORTAL.toMAIN: ;
|
||||
PUSH BC ;
|
||||
RETBANK+2: ;
|
||||
LD BC,0*256+SLOT0 ;
|
||||
OUT (C),B ;
|
||||
ASSERT $!=84,'-> Portal error!';
|
||||
;Entry point from DSS main page ; !FIXIT ¥á«¨ 2 à § ¯à¨«¥â¥âì íâã â®çªã ¢å®¤ , â® § áàñâáï RETBANK
|
||||
LD (RETBANK),A ;
|
||||
POP BC ;
|
||||
POP AF ;
|
||||
ADCALL+1: ;
|
||||
CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
||||
JR PORTAL.toMAIN ;
|
||||
_mInfoBLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
|
||||
PORTAL.out_DRV: PUSH BC ;
|
||||
.RETBANK+2: LD BC,0*256+SLOT0 ;
|
||||
.switch: OUT (C),B ;
|
||||
ASSERT $!=84,'-> Portal error!';
|
||||
;Entry point from DSS main page
|
||||
LD (.RETBANK),A ;
|
||||
POP BC ;
|
||||
POP AF ;
|
||||
ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
||||
JP PORTAL.out_DRV ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
/*
|
||||
push hl
|
||||
|
||||
*/
|
||||
display "=============================",/H,(#82-#73-(PORTAL.toMAIN.switch-PORTAL.toMAIN))
|
||||
|
||||
|
||||
;!FIXIT çñâ ¥ â® âãâ
|
||||
@ -214,23 +219,162 @@ PORTAL.outDRV: ;
|
||||
|
||||
;
|
||||
DISPATCH:
|
||||
CALL INITDVC
|
||||
LD HL,INTDISK
|
||||
LD (ADCALL),HL
|
||||
LD A,(LDRIVE)
|
||||
INITDVC_RET_DRIVE:
|
||||
CALL INITDVC
|
||||
LD A,(DRV_PAGE.LDRIVE)
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
|
||||
LDRIVE DB #00
|
||||
DRV_PAGE.LDRIVE: DB #00
|
||||
|
||||
INCLUDE 'dss/media_drivers/Shared.asm'
|
||||
INCLUDE 'dss/media_drivers/ide.asm'
|
||||
INCLUDE 'dss/media_drivers/fdd.asm'
|
||||
INCLUDE 'dss/media_drivers/ram_disk.asm'
|
||||
INCLUDE 'dss/media_drivers/shared-drv.asm'
|
||||
INCLUDE 'dss/media_drivers/ide-drv.asm'
|
||||
INCLUDE 'dss/media_drivers/fdd-drv.asm'
|
||||
INCLUDE 'dss/media_drivers/ram_disk-drv.asm'
|
||||
|
||||
; DB 0
|
||||
|
||||
ENDMODULE
|
||||
DEVICE_CFG:
|
||||
DRV_TEMP_BUFFER:
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
;---------[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
|
||||
;[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
|
||||
;=====================================================================[]
|
||||
;
|
||||
;
|
||||
*/
|
||||
@ -9,6 +9,7 @@
|
||||
;[ ] ¯ãâì ⥪ã饣® ª â «®£ ¢ DIR ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ® ¤«¨¥¥ 256 ¡ ©â®¢
|
||||
;[ ] ¯ãâì ¢ ¯à¨£« 襨¨ ª®á®«¨ ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ¯ãâì ¤«¨¥¥ 256 ¡ ©â®¢
|
||||
;[ ] ;!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
|
||||
;R10 14-04-2023 BAO €¢ à¨©ë© § ¢¨á® á ¢ë¢®¤®¬ á®®¡é¥¨ï ¯à¨ áâ à⥠á¨á⥬ë, ¥á«¨ ¥â ᢮¡®¤®© ¯ ¬ïâ¨
|
||||
;R09 08-04-2023 BAO ‘®ªà 饨¥ à §¬¥à â ¡«¨æë API ¤® 96 äãªæ¨© (0 - #5F). (Ž¯æ¨® «ì® ¯à¨ ª®¬¯¨«ï樨)
|
||||
@ -94,7 +95,7 @@ RST_0x18: PUSH AF ;
|
||||
PUSH BC ;
|
||||
DRV_PG_NUMBER+2: ;
|
||||
LD BC,0*256+SLOT0 ;
|
||||
JP PORTAL.outMAIN ;
|
||||
JP PORTAL.out_MAIN ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
@ -219,7 +220,7 @@ RST_10: PUSH HL
|
||||
; <[DRIVE PAGE SWITCH]> ;
|
||||
_mInfoBLOCK #80-$,0 ;
|
||||
;ENTER: ;
|
||||
PORTAL.outMAIN: ;
|
||||
PORTAL.out_MAIN: ;
|
||||
IN A,(C) ;
|
||||
OUT (C),B ;
|
||||
ASSERT $!=84,'-> Portal error!';
|
||||
@ -262,19 +263,33 @@ PORTAL.outMAIN: ;
|
||||
;R01
|
||||
|
||||
; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨¨æ¨ «¨§ 樨 ¤à¥á ¢ â ¡«¨æ¥ ¬¥ï¥âáï VERSION
|
||||
F_START:
|
||||
DI
|
||||
F_START: DI
|
||||
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
|
||||
CALL KINIT
|
||||
CALL PRINT_INIT
|
||||
LD C,0
|
||||
RST #30
|
||||
LD C,0 ;!HARDCODE
|
||||
RST #30 ;!HARDCODE
|
||||
LD A,(VMODE)
|
||||
LD C,#81
|
||||
RST #30
|
||||
LD C,#81 ;!HARDCODE
|
||||
RST #30 ;!HARDCODE
|
||||
;CALL INITDVC ;R05
|
||||
;R05
|
||||
LD C,Dss.DRV.Init
|
||||
@ -284,7 +299,7 @@ F_START:
|
||||
|
||||
.saveDRV+1: LD A,0
|
||||
LD BC,1*256 + Dss.BootDSK
|
||||
RST #10
|
||||
RST ToDSS
|
||||
|
||||
EI
|
||||
;Set new address fn. VERSION
|
||||
@ -315,6 +330,18 @@ F_START:
|
||||
ENDIF
|
||||
;R02
|
||||
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
|
||||
;R07Allocate memory
|
||||
; LD BC,#03C2
|
||||
@ -502,7 +529,7 @@ DEPLOY:
|
||||
IN A,(SLOT3)
|
||||
PUSH AF
|
||||
IN A,(SLOT0)
|
||||
LD (DRV.MAIN_PG_NUMBER),A
|
||||
LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A ;!TEST
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD A,C
|
||||
@ -546,7 +573,6 @@ DEPLOY:
|
||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
|
||||
DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes."
|
||||
DRV_CONTENT:
|
||||
; ENDMODULE
|
||||
DISP 0
|
||||
INCLUDE 'DRV-MAIN.ASM'
|
||||
ENT
|
||||
|
||||
@ -222,8 +222,6 @@ FDDRIVE:
|
||||
; 80 - SET DEVICE PARAMETERS
|
||||
; 81 - WRITE TRACK
|
||||
; 82 - FORMAT TRACK
|
||||
|
||||
|
||||
.IOCTL_F:
|
||||
BIT 7,B
|
||||
JR NZ,.O_CTL_F
|
||||
@ -263,7 +261,6 @@ FDDRIVE:
|
||||
; D5 - "1" RESERVED
|
||||
; D6 - ADDRESSING MODE LBA/CHS
|
||||
; D7 - "1" RESERVED
|
||||
|
||||
.FGETPRM:
|
||||
EX DE,HL
|
||||
LD BC,#55AA
|
||||
@ -276,7 +273,7 @@ FDDRIVE:
|
||||
LD A,L
|
||||
AND #0F
|
||||
PUSH AF
|
||||
LD C,#58
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
JR C,.NONEF
|
||||
PUSH HL
|
||||
@ -334,7 +331,6 @@ FDDRIVE:
|
||||
; D5 - "1" RESERVED
|
||||
; D6 - ADDRESSING MODE LBA/CHS
|
||||
; D7 - "1" RESERVED
|
||||
|
||||
.FSETPRM:
|
||||
PUSH AF
|
||||
EXX
|
||||
@ -346,13 +342,13 @@ FDDRIVE:
|
||||
PUSH AF
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD C,#58
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
POP DE
|
||||
POP HL
|
||||
JR C,.NONEF
|
||||
POP AF
|
||||
LD C,#59
|
||||
LD C,BIOS.DRV_SET_PAR
|
||||
RST ToBIOS
|
||||
RET C
|
||||
AND A
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
;---------------------------------------------------------------
|
||||
;
|
||||
; Disk Driver Specification ver. 2.20
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[0]
|
||||
;Procedure : Initialization
|
||||
;
|
||||
;Function : Initialization device(s)
|
||||
@ -15,8 +15,9 @@
|
||||
; IX - Environment
|
||||
;Output : A = Amount drive support
|
||||
; HL = Size driver
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[0]
|
||||
|
||||
;[]===========================================================[1]
|
||||
;Procedure : Open
|
||||
;
|
||||
;Function : Open disk
|
||||
@ -25,8 +26,9 @@
|
||||
; A - Drive
|
||||
;Output : None
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[1]
|
||||
|
||||
;[]===========================================================[2]
|
||||
;Procedure : Close
|
||||
;
|
||||
;Function : Close disk
|
||||
@ -35,8 +37,9 @@
|
||||
; A - Drive
|
||||
;Output : None
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[2]
|
||||
|
||||
;[]===========================================================[3]
|
||||
;Procedure : Media check
|
||||
;
|
||||
;Function : Checking change line
|
||||
@ -46,8 +49,9 @@
|
||||
;Output : A = 00h disk no changed
|
||||
; A = 0FFh disk changed
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[3]
|
||||
|
||||
;[]===========================================================[4]
|
||||
;Procedure : Get BPB
|
||||
;
|
||||
;Function : Get Block Parameters BIOS
|
||||
@ -56,8 +60,9 @@
|
||||
; DE - Address
|
||||
;Output : None
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[4]
|
||||
|
||||
;[]===========================================================[5]
|
||||
;Procedure : Input
|
||||
;
|
||||
;Function : Input from disk
|
||||
@ -68,8 +73,9 @@
|
||||
; B - Sector count
|
||||
;Output : None
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[5]
|
||||
|
||||
;[]===========================================================[6]
|
||||
;Procedure : Output
|
||||
;
|
||||
;Function : Output to disk
|
||||
@ -80,8 +86,9 @@
|
||||
; B - Sector count
|
||||
;Output : None
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[6]
|
||||
|
||||
;[]===========================================================[7]
|
||||
;Procedure : Removable
|
||||
;
|
||||
;Function : Checking change line
|
||||
@ -91,8 +98,9 @@
|
||||
;Output : A = 00h Removable
|
||||
; A = FFh Nonremovable
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[7]
|
||||
|
||||
;[]===========================================================[8]
|
||||
;Procedure : Generic IOCTL
|
||||
;
|
||||
;Function : Generic Input Output Control
|
||||
@ -110,8 +118,9 @@
|
||||
; 82h - Format track
|
||||
;Output :
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[8]
|
||||
|
||||
;[]===========================================================[9]
|
||||
;Procedure : Read Long
|
||||
;
|
||||
;Function : Reading sectors from disk
|
||||
@ -125,8 +134,9 @@
|
||||
; HL:IX - Next Logical Block (sector)
|
||||
; DE - Next Address
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[9]
|
||||
|
||||
;[]===========================================================[10]
|
||||
;Procedure : Write Long
|
||||
;
|
||||
;Function : Writing sectors to disk
|
||||
@ -140,7 +150,8 @@
|
||||
; HL:IX - Next Logical Block (sector)
|
||||
; DE - Next Address
|
||||
;
|
||||
;[]===========================================================[]
|
||||
;[]===========================================================[10]
|
||||
|
||||
;
|
||||
; Errors:
|
||||
; 0 (00h) - NO ERRORS
|
||||
@ -158,7 +169,7 @@
|
||||
; 12 (0Ch) - BUSY (DEVICE OPENED)
|
||||
; 13 (0Dh) - RESERVED
|
||||
|
||||
LD_DSK EQU 16
|
||||
LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å ¤¨áª®¢ ¢ á¨á⥬¥
|
||||
|
||||
; IDE0 EQU #0C1C0
|
||||
; IDE1 EQU #0C1C8
|
||||
@ -166,77 +177,110 @@ PART EQU #C000
|
||||
|
||||
HDDRIVE INC C
|
||||
DEC C
|
||||
JP Z,INIT_H ;#00
|
||||
JP Z,INIT_H ; c=0 Initialization
|
||||
DEC C
|
||||
JP Z,RESE_H ;#01
|
||||
JP Z,RESE_H ; c=1 open
|
||||
DEC C
|
||||
JP Z,STAT_H ;#02
|
||||
JP Z,STAT_H ; c=2 close
|
||||
DEC C
|
||||
JP Z,CHEK_H ;#03
|
||||
JP Z,CHEK_H ; c=3 media check (ᬥ ®á¨â¥«ï)
|
||||
DEC C
|
||||
JP Z,GBPB_H ;#04
|
||||
JP Z,GBPB_H ; c=4 get BPB
|
||||
DEC C
|
||||
JP Z,READH ;#05
|
||||
JP Z,READH ; c=5 input (ç⥨¥ ᥪâ®à®¢)
|
||||
DEC C
|
||||
JP Z,WRITEH ;#06
|
||||
JP Z,WRITEH ; c=6 output (§ ¯¨áì ᥪâ®à®¢)
|
||||
DEC C
|
||||
JP Z,REMOV_H ;#07
|
||||
JP Z,REMOV_H ; c=7 Removable
|
||||
DEC C
|
||||
JP Z,IOCTL_H ;#08
|
||||
JP Z,IOCTL_H ; c=8 ã§ âì £¥®¬¥âà¨î ¤¨áª Generic IOCTL
|
||||
DEC C
|
||||
JP Z,RESR_H ;#09
|
||||
JP Z,RESR_H ; c=9 Reserved
|
||||
DEC C
|
||||
JP Z,LREADH ;#0A
|
||||
JP Z,LREADH ; c=10 Read Long
|
||||
DEC C
|
||||
JP Z,LWRITEH ;#0B
|
||||
JP Z,LWRITEH ; c=11 Write Long
|
||||
RESR_H LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
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 (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
|
||||
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 (DRV),A
|
||||
CALL PARTIT
|
||||
LD (DRV_NUM),A
|
||||
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
|
||||
;R02
|
||||
;R02 LD A,#80
|
||||
;R02 LD (DRV),A
|
||||
;R02 LD C,SLOT3
|
||||
;R02 IN B,(C)
|
||||
;R02 LD A,SYSPAGE
|
||||
;R02 OUT (C),A
|
||||
;R02 LD HL,IDE0
|
||||
;R02 CALL YEP_DRV
|
||||
;R02 OUT (C),B
|
||||
;R02 CALL NZ,PARTIT
|
||||
;R02
|
||||
;R02 LD A,#81
|
||||
;R02 LD (DRV),A
|
||||
;R02 LD C,SLOT3
|
||||
;R02 IN B,(C)
|
||||
;R02 LD A,SYSPAGE
|
||||
;R02 OUT (C),A
|
||||
;R02 LD HL,IDE1
|
||||
;R02 CALL YEP_DRV
|
||||
;R02 OUT (C),B
|
||||
;R02 CALL NZ,PARTIT
|
||||
|
||||
|
||||
; c=0 Initialization
|
||||
; INIT_H: PUSH IY
|
||||
; LD HL,LOGDRV
|
||||
; LD (OFFSECT),HL
|
||||
; LD IX,DEVICE_CFG ;!FIXIT ¥ § áà¥â «¨ ¯ ¬ïâì?
|
||||
; LD C,BIOS.DRV_LIST
|
||||
; RST ToBIOS
|
||||
; XOR A
|
||||
; ;!TEST
|
||||
; ;LD B,(IX+2)
|
||||
; ;CP B
|
||||
; CP (IX+2) ;HDD
|
||||
; JR Z,NO_HARDS
|
||||
; LD BC,4*256 + #80 ;!HARDCODE 4 - ª®«¨ç¥á⢮ ¢¨â®¢, 80 - ID ¢¨â ;!FIXIT
|
||||
; ;LD C,#80 ;!HARDCODE 4 - ª®«¨ç¥á⢮ ¢¨â®¢, 80 - ID ¢¨â ;!FIXIT
|
||||
|
||||
; NX_DVCI: PUSH BC
|
||||
; LD A,C
|
||||
; LD (DRV_NUM),A
|
||||
; 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:
|
||||
POP IY
|
||||
LD HL,(OFFSECT)
|
||||
@ -245,37 +289,21 @@ NO_HARDS:
|
||||
SBC HL,DE
|
||||
RET Z
|
||||
LD DE,LD_DSK
|
||||
DRVCLC INC A
|
||||
DRVCLC: INC A
|
||||
SBC HL,DE
|
||||
JR NZ,DRVCLC
|
||||
AND A
|
||||
RET
|
||||
|
||||
DEVICE_CFG EQU #4000
|
||||
;DEVICE_CFG EQU #4000 ;!TEST
|
||||
;DEVICE_CFG EQU DRV_TEMP_BUFFER ;!TEST
|
||||
; DB 0 ;LEN
|
||||
; DB 0 ;FDD COUNT
|
||||
; DB 0 ;HDD COUNT
|
||||
; DB 0 ;CDROM COUNT
|
||||
; 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
|
||||
;+01 ;TRACKS PER CYLLINDER
|
||||
@ -286,40 +314,17 @@ YEP_DRV LD A,#FF
|
||||
;+06 ;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
|
||||
|
||||
|
||||
;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
|
||||
LOGDRV: BLOCK 16*LD_DSK,0 ;!FIXIT ¯¥à¥¥á⨠ª ¡ãä¥à ¬ ¢ ª®¥æ áâà ¨æë
|
||||
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
;+01 LONG SECTOR OFFSET
|
||||
;+05 LONG SIZE IN SECTORS
|
||||
;+09 FREE
|
||||
;+15
|
||||
SELHDD PUSH DE
|
||||
.Size EQU $-LOGDRV
|
||||
|
||||
|
||||
SELHDD: PUSH DE
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
LD L,A
|
||||
@ -349,8 +354,6 @@ SELHDD PUSH DE
|
||||
; 80 - SET DEVICE PARAMETERS
|
||||
; 81 - WRITE TRACK
|
||||
; 82 - FORMAT TRACK
|
||||
|
||||
|
||||
IOCTL_H BIT 7,B
|
||||
JR NZ,O_CTL_H
|
||||
INC B
|
||||
@ -400,14 +403,17 @@ HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
; DE' - HEADS ON PHISICAL DISK
|
||||
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
||||
; A' - PHISICAL DRIVE NUMBER
|
||||
; A - DRIVE/HEAD REGISTER PHISICAL DISK
|
||||
; D0...D3 - "0" RESERVED (MAY BE OTHER)
|
||||
; D4 - DEVICE MASTER/SLAVE
|
||||
; D5 - "1" RESERVED
|
||||
; D6 - ADDRESSING MODE LBA/CHS
|
||||
; D7 - "1" RESERVED
|
||||
|
||||
HGETPRM EX DE,HL
|
||||
; A - DRIVE/HEAD REGISTER PHISICAL DISK:
|
||||
; bit7 - reserved "1"
|
||||
; bit6 - ADDRESSING MODE LBA/CHS
|
||||
; bit5 - reserved "1"
|
||||
; bit4 - DEVICE MASTER/SLAVE
|
||||
; bit3 - reserved "0" (MAY BE OTHER)
|
||||
; bit2 - reserved "0" (MAY BE OTHER)
|
||||
; bit1 - reserved "0" (MAY BE OTHER)
|
||||
; bit0 - Primary/Secondary Chanel
|
||||
HGETPRM:
|
||||
EX DE,HL
|
||||
LD BC,#55AA
|
||||
AND A
|
||||
SBC HL,BC
|
||||
@ -415,6 +421,8 @@ HGETPRM EX DE,HL
|
||||
LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET NZ
|
||||
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
@ -423,55 +431,81 @@ HGETPRM EX DE,HL
|
||||
ADD HL,HL
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD IY,LOGDRV ;!FIXIT åॠâãâ ¨¤¥ªáë©?
|
||||
LD IY,LOGDRV
|
||||
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 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+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'
|
||||
;
|
||||
LD A,(IY+0) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
;!TEST --------------------------------------------------------------------------------+
|
||||
PUSH IY
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
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
|
||||
RET
|
||||
|
||||
REMOV_H LD A,1
|
||||
AND A
|
||||
RESE_H: XOR A
|
||||
RET
|
||||
|
||||
RESE_H XOR A
|
||||
RET
|
||||
|
||||
STAT_H XOR A
|
||||
STAT_H: XOR A
|
||||
RET
|
||||
|
||||
CHEK_H:
|
||||
@ -484,8 +518,7 @@ CHEK_H:
|
||||
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
|
||||
GBPB_H PUSH IY
|
||||
GBPB_H: PUSH IY
|
||||
PUSH DE
|
||||
LD L,A
|
||||
LD H,0
|
||||
@ -506,7 +539,7 @@ GBPB_H PUSH IY
|
||||
LD A,(IY+0)
|
||||
POP DE
|
||||
POP IY
|
||||
LD BC,#0155
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
RST ToBIOS
|
||||
RET
|
||||
|
||||
@ -514,10 +547,11 @@ GBPB_H PUSH IY
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A'- PAGE
|
||||
; A - HDD NUMBER +#80
|
||||
;READ SECTOR
|
||||
LREADH PUSH IY
|
||||
LREADH: PUSH IY
|
||||
CALL SELHDD
|
||||
LD C,#52 ; A - HDD NUMBER +128
|
||||
LD C,BIOS.DRV_READ_LONG
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
RET
|
||||
@ -526,10 +560,12 @@ LREADH PUSH IY
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A'- PAGE
|
||||
; A - HDD NUMBER +#80
|
||||
;WRITE SECTOR
|
||||
LWRITEH PUSH IY
|
||||
LWRITEH:
|
||||
PUSH IY
|
||||
CALL SELHDD
|
||||
LD C,#53 ; A - HDD NUMBER +128
|
||||
LD C,BIOS.DRV_WRITE_LONG
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
RET
|
||||
@ -537,10 +573,11 @@ LWRITEH PUSH IY
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A - HDD NUMBER +#80
|
||||
;WRITE SECTOR
|
||||
WRITEH PUSH IY
|
||||
WRITEH: PUSH IY
|
||||
CALL SELHDD
|
||||
LD C,#56 ; A - HDD NUMBER +128
|
||||
LD C,BIOS.DRV_WRITE
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
RET
|
||||
@ -548,10 +585,11 @@ WRITEH PUSH IY
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A - HDD NUMBER +#80
|
||||
;READ SECTOR
|
||||
READH PUSH IY
|
||||
READH: PUSH IY
|
||||
CALL SELHDD
|
||||
LD C,#55 ; A - HDD NUMBER +128
|
||||
LD C,BIOS.DRV_READ
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
RET
|
||||
@ -559,18 +597,20 @@ READH PUSH IY
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A - HDD NUMBER +#80
|
||||
;CHECK SECTOR
|
||||
CHECKH PUSH IY
|
||||
CHECKH: PUSH IY
|
||||
CALL SELHDD
|
||||
LD C,#54 ; A - HDD NUMBER +128
|
||||
LD C,BIOS.DRV_VERIFY
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
RET
|
||||
|
||||
;-----------------
|
||||
EASYDOS
|
||||
MEDIDOS
|
||||
HIGHDOS LD E,(IY+08)
|
||||
EASYDOS:
|
||||
MEDIDOS:
|
||||
HIGHDOS:
|
||||
LD E,(IY+08)
|
||||
LD D,(IY+09)
|
||||
LD L,(IY+10)
|
||||
LD H,(IY+11)
|
||||
@ -599,7 +639,7 @@ HIGHDOS LD E,(IY+08)
|
||||
LD (IX+6),D
|
||||
LD (IX+7),L
|
||||
LD (IX+8),H
|
||||
LD A,(DRV)
|
||||
LD A,(DRV_NUM)
|
||||
LD (IX+0),A
|
||||
LD DE,LD_DSK ; DSKITEM
|
||||
ADD IX,DE
|
||||
@ -611,7 +651,7 @@ NXTPART LD DE,#10
|
||||
AND A
|
||||
RET
|
||||
|
||||
PARTIT IN A,(SLOT3)
|
||||
PARTIT: IN A,(SLOT3)
|
||||
PUSH AF
|
||||
LD A,DSS_PAGE
|
||||
OUT (SLOT3),A
|
||||
@ -628,14 +668,14 @@ PARTIT2 LD (CURSECL),DE
|
||||
LD (CURSECH),IX
|
||||
CALL LOADSEC
|
||||
;!TEST
|
||||
RET C ;FOR IDE2..3
|
||||
;RET C ; for absent drive
|
||||
;
|
||||
LD HL,(PART+510)
|
||||
LD HL,(PART+510) ;!HARDCODE
|
||||
LD DE,#AA55
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR NZ,NODEFIN
|
||||
LD IY,PART+#01BE
|
||||
LD IY,PART+#01BE ;!HARDCODE
|
||||
LD B,4
|
||||
DOSAGA PUSH BC
|
||||
LD A,(IY+4)
|
||||
@ -670,8 +710,7 @@ NOEXTDS CP #0F
|
||||
NODEFIN SCF
|
||||
RET
|
||||
|
||||
EXTDOS
|
||||
LD HL,(EXTDOSL)
|
||||
EXTDOS: LD HL,(EXTDOSL)
|
||||
LD DE,(EXTDOSH)
|
||||
LD A,L
|
||||
OR H
|
||||
@ -701,13 +740,13 @@ LOADSEC PUSH IY
|
||||
LD IX,(CURSECL)
|
||||
LD HL,(CURSECH)
|
||||
LD DE,PART
|
||||
LD A,(DRV_NUM)
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
LD A,(DRV)
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
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
|
||||
CURSECH DW #0000
|
||||
|
||||
@ -247,7 +247,8 @@ CHEK_RD LD A,#FF
|
||||
RET
|
||||
|
||||
;DE - ADDRESS
|
||||
GBPB_RD LD IX,0
|
||||
GBPB_RD:
|
||||
LD IX,0
|
||||
LD HL,0
|
||||
LD B,#01
|
||||
;JP READ_RD
|
||||
@ -329,7 +330,6 @@ INIT_RD:
|
||||
LD (DE),A
|
||||
INC DE
|
||||
JP 1F
|
||||
|
||||
.noDRV: POP BC
|
||||
1: INC B
|
||||
LD A,RAMDTBL.Size / 2
|
||||
|
||||
@ -116,6 +116,9 @@
|
||||
; EX (SP),HL
|
||||
; RET
|
||||
|
||||
;!FIXIT ¯®¯¥à¥¤¥«ë¢ âì âã⠢맮¢ë ç¥à¥§ â®çª¨ ¢å®¤ ⨯ RST ¨«¨ ¢ë§®¢ë ⨯ LD C,0 : CALL HDDRIVE ¯àï¬ë¥
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; RST 18h. ‚¥ªâ®à ¤¨áª®¢ëå ãáâனáâ¢
|
||||
; ¢å®¤: a=®¬¥à ãáâனá⢠(0-25)
|
||||
@ -159,7 +162,7 @@ NODEV: POP BC
|
||||
|
||||
PDEVICE DW DEVICE
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*3,#FF
|
||||
.End: DB #FF
|
||||
.Size: DB #FF
|
||||
|
||||
FLOPPY EQU #0001
|
||||
FIXED EQU #0002
|
||||
@ -191,33 +194,30 @@ NETWORK EQU #0008
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
;R01
|
||||
INITDVC_RET_DRIVE:
|
||||
CALL INITDVC
|
||||
LD A,(LDRIVE)
|
||||
AND A
|
||||
RET
|
||||
; INITDVC_RET_DRIVE:
|
||||
; CALL INITDVC
|
||||
; LD A,(DRV_PAGE.LDRIVE)
|
||||
; AND A
|
||||
; RET
|
||||
;
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; <20>à®áª ¨à®¢ âì á¨á⥬ã FDD/HDD ¤¥¢ ©áë ¨ RAM-¤¨áª¨
|
||||
;-----------------------------------------------------------
|
||||
INITDVC: XOR A
|
||||
LD (LDRIVE),A ; á¡à. ï祩ªã
|
||||
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
|
||||
LD HL,DEVICE
|
||||
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
|
||||
; FDD ¤¥¢ ©áë
|
||||
LD C,A
|
||||
CALL FDDRIVE ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
CALL FDDRIVE.INIT ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
LD DE,FDDRIVE ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||||
CALL MAKEDVC ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||||
; HDD ¤¥¢ ©áë
|
||||
LD C,0
|
||||
CALL HDDRIVE
|
||||
.if_old: CALL INIT_H ; ¥á«¨ áâ à⥠¢¥àá¨ï BIOS ¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥ ª®¤ XOR A : RET
|
||||
LD DE,HDDRIVE
|
||||
CALL MAKEDVC
|
||||
; RAM-¤¨áª¨
|
||||
LD C,0
|
||||
CALL RMDRIVE
|
||||
CALL INIT_RD
|
||||
LD DE,RMDRIVE
|
||||
CALL MAKEDVC
|
||||
XOR A
|
||||
@ -227,7 +227,7 @@ INITDVC: XOR A
|
||||
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪 ¤¥¢ ©á
|
||||
; a=ç¨á«® ¤¥¢ ©á®¢ (0=¥â)
|
||||
MAKEDVC: LD C,A
|
||||
LD HL,LDRIVE ; ï祩ª ®¬¥à ¯®á«. ¤¨áª
|
||||
LD HL,DRV_PAGE.LDRIVE ; ï祩ª ®¬¥à ¯®á«. ¤¨áª
|
||||
ADD A,(HL)
|
||||
LD (HL),A
|
||||
LD A,C
|
||||
@ -235,7 +235,7 @@ MAKEDVC: LD C,A
|
||||
OR A
|
||||
RET Z ; ¥â ¤¥¢ ©á®¢
|
||||
LD HL,(PDEVICE) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥
|
||||
.loop: LD (HL),C ; ®¬¥à ¤à ©¢ í⮣® ãáâனá⢠(¬« ¤è¨¥ 4 ¡¨â ). <20> ¯à¨¬¥à, ¤«ï HDD #81: #80 - ⨯ ¤à ©¢ , 1 - ®¬¥à ¤à ©¢
|
||||
.loop: LD (HL),C ; ®¬¥à «®£.¤à ©¢ í⮣® ãáâனáâ¢
|
||||
INC HL
|
||||
LD (HL),E ; de= ¤à¥á ®¡à ¡®â稪
|
||||
INC HL
|
||||
@ -269,5 +269,4 @@ MAKEDVC: LD C,A
|
||||
; DW HDDRIVE ; HDD I
|
||||
; DB #07
|
||||
; DW HDDRIVE ; HDD J
|
||||
; DB #FF
|
||||
|
||||
; DB #FF
|
||||
@ -12,7 +12,7 @@
|
||||
;---------------------------------------------------------------
|
||||
|
||||
; CLEAR TEXT WINDOW
|
||||
CLEAR LD C,BIOS.LP_CLS_WIN2
|
||||
CLEAR: LD C,BIOS.LP_CLS_WIN2
|
||||
RST ToBIOS
|
||||
AND A
|
||||
RET
|
||||
@ -20,7 +20,7 @@ CLEAR LD C,BIOS.LP_CLS_WIN2
|
||||
|
||||
; PRINT NULL-TERMINATED CHARS STRING
|
||||
; HL - STRING POINTER
|
||||
PCHARS LD A,(HL)
|
||||
PCHARS: LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
RET Z
|
||||
|
||||
@ -1 +1 @@
|
||||
43
|
||||
114
|
||||
@ -12,11 +12,13 @@
|
||||
DEFINE TABisSPACES 1
|
||||
DEFINE CLASSIC_CURSOR 0
|
||||
DEFINE SAVE_PATH_MACRO 0
|
||||
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
||||
;
|
||||
;-------------------[MEMORY]-------------------------;
|
||||
DEFINE USING_MEMPAGES 4
|
||||
DEFINE OLD_SET_BANK 0
|
||||
|
||||
PORTAL.RSTx18_SWITCH_ADDRESS #82
|
||||
; ªíè ᯨ᪠ª â «®£
|
||||
DIRPAGE EQU 0
|
||||
FATPAGE EQU 1
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 94cb0e39f321bd11519008801187d93eacb280f2
|
||||
Subproject commit b25c3779d6af8abc2970d3a9a55006f43292c86e
|
||||
Loading…
Reference in New Issue
Block a user