mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-18 19:00:38 +03:00
промежуточный
This commit is contained in:
parent
f4140a5733
commit
c50040b715
@ -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'
|
||||||
|
|||||||
@ -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,19 +1917,18 @@ 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 - ¥¯à ¢¨«ìë© ®¬¥à ãáâனáâ¢
|
||||||
@ -1968,10 +1981,10 @@ ERR0 DB #00
|
|||||||
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:
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
270
DSS/DRV-MAIN.ASM
270
DSS/DRV-MAIN.ASM
@ -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 ;
|
|
||||||
OUT (C),B ;
|
|
||||||
ASSERT $!=84,'-> Portal error!';
|
ASSERT $!=84,'-> Portal error!';
|
||||||
;Entry point from DSS main page ; !FIXIT ¥á«¨ 2 à § ¯à¨«¥â¥âì íâã â®çªã ¢å®¤ , â® § áàñâáï RETBANK
|
;Entry point from DSS main page
|
||||||
LD (RETBANK),A ;
|
LD (.RETBANK),A ;
|
||||||
POP BC ;
|
POP BC ;
|
||||||
POP AF ;
|
POP AF ;
|
||||||
ADCALL+1: ;
|
ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
||||||
CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
JP PORTAL.out_DRV ;
|
||||||
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
|
||||||
|
;=====================================================================[]
|
||||||
|
;
|
||||||
|
;
|
||||||
|
*/
|
||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
LD A,C
|
||||||
LD (DRV),A
|
OUT (SLOT3),A
|
||||||
CALL PARTIT
|
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_NUM),A
|
||||||
|
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 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 E,(IY+5)
|
||||||
LD D,(IY+6)
|
LD D,(IY+6)
|
||||||
LD L,(IY+7)
|
LD L,(IY+7)
|
||||||
LD H,(IY+8)
|
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'
|
EX AF,AF'
|
||||||
POP AF
|
LD A,(IY+0) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,C
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
POP IY
|
|
||||||
|
; 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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
@ -270,4 +270,3 @@ MAKEDVC: LD C,A
|
|||||||
; DB #07
|
; DB #07
|
||||||
; DW HDDRIVE ; HDD J
|
; DW HDDRIVE ; HDD J
|
||||||
; DB #FF
|
; DB #FF
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
43
|
114
|
||||||
@ -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
|
||||||
Loading…
Reference in New Issue
Block a user