mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
New rescan drives feature - save bootdisk letter after rescan
This commit is contained in:
parent
a99ed14bda
commit
663016bd16
@ -35,7 +35,7 @@ DRIVE: _mSYSID
|
||||
BIT 7,A
|
||||
JR Z,GOOD_DRIVE
|
||||
EX DE,HL
|
||||
LD DE,2*256 + 21 ; ¥á«¨ ¢¥àá¨ï ¨¦¥ 2.21, â® ®è¨¡ª
|
||||
LD DE,2*256 + 21 ;!HARDCODE ¥á«¨ ¢¥àá¨ï ¨¦¥ 2.21, â® ®è¨¡ª
|
||||
SBC HL,DE
|
||||
LD A,INCORR
|
||||
JR C,FAIL
|
||||
|
||||
171
DSS/DOS_X.ASM
171
DSS/DOS_X.ASM
@ -161,7 +161,7 @@ FRESP2: LD D,B
|
||||
AND A
|
||||
RET
|
||||
|
||||
LDRIVE: DB #FF
|
||||
LDRIVE: DB DSS_MAX_DRIVES_AMOUNT
|
||||
TDRIVE: DB #00
|
||||
TCLUST: DW #0000
|
||||
TCOUNT: DW #0000
|
||||
@ -426,7 +426,7 @@ RDERR1: LD A,DSS_Error.sys.NOT_READY
|
||||
;SCF
|
||||
RET
|
||||
|
||||
;
|
||||
;!FIXIT ª ¡ãä¥à ¬!
|
||||
FatBuffer:
|
||||
.MSG: DB 'FAT'
|
||||
.READ_PG: DB #00
|
||||
@ -527,13 +527,29 @@ BACK_CUR_PATH:
|
||||
;R11
|
||||
|
||||
;R12
|
||||
;/////////////////////////////////////////////////////////////////////
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
; ”ãªæ¨ï #08 (DSS_RESCAN). <20>¥à¥áª ¨à®¢ âì ¤¥¢ ©áë á¨á⥬ë.
|
||||
;
|
||||
; ¢å®¤: ¥â
|
||||
; ¢ë室: A - ®¬¥à ¯®á«¥¤¥£® «®£. ¤¨áª ¢ á¨á⥬¥
|
||||
;/////////////////////////////////////////////////////////////////////
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
SCANDRV:
|
||||
;1 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
CALL GETBOOT
|
||||
LD (.old_letter),A ; bootdisk Log.number
|
||||
; [-----------]
|
||||
|
||||
;2 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
; A = bootdisk Log.number
|
||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||
RST ToDSS.DRV
|
||||
EX AF,AF'
|
||||
LD (.old_DRIVE_ID),A
|
||||
; [-----------]
|
||||
|
||||
|
||||
;3 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
;!TEST ¢ DRV-MAIN ¬®£ãâ ¡ëâì ¯à®¡«¥¬ë á ¯à¥àë¢ ¨ï¬¨
|
||||
;DI
|
||||
LD A,Dss.DRV.RescanDRV
|
||||
@ -542,7 +558,154 @@ SCANDRV:
|
||||
LD (LDRIVE),A
|
||||
;EI
|
||||
;
|
||||
; [-----------]
|
||||
|
||||
;4 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
.old_DRIVE_ID+1:
|
||||
LD A,0
|
||||
CALL SETBOOT
|
||||
JR C,.ERROR_BOOTDRV_DIES
|
||||
LD (.new_letter),A
|
||||
;
|
||||
|
||||
;5 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
AND A
|
||||
LD A,R
|
||||
PUSH AF
|
||||
DI
|
||||
;;;;;;;;
|
||||
IN A,(SLOT3)
|
||||
LD (.restore_page),A
|
||||
LD A,(DRV_PG_NUMBER)
|
||||
OUT (SLOT3),A
|
||||
;;;;;
|
||||
|
||||
; ¢ëç¨á«ï¥¬ ᬥ饨¥ bootdisk ¢ ®¢®© â ¡«¨æ¥ DEVICE
|
||||
.new_letter+1:
|
||||
LD A,0
|
||||
CALL .get_entry_addr
|
||||
PUSH HL
|
||||
; á®åà 塞 § ç¥¨ï ®¢®£® boot
|
||||
LD DE,.TMP_BUFFER
|
||||
LD BC,DEVICE.TBL_Entry
|
||||
LDIR
|
||||
; ¢ëç¨á«ï¥¬ ᬥ饨¥ ¤«ï ¡ãª¢ë áâ ண® bootdisk ¢ ®¢®© â ¡«¨æ¥ DEVICE
|
||||
.old_letter+1:
|
||||
LD A,0
|
||||
CALL .get_entry_addr
|
||||
; ¬¥ï¥¬ ¡ãª¢ã ¤¨áª ¤«ï ¤¥¢ ©á § ï¢è¥£® áâ àãî ¡ãª¢ã bootdisk
|
||||
POP DE
|
||||
LD BC,DEVICE.TBL_Entry
|
||||
LDIR
|
||||
; ¢®ááâ ¢«¨¢ ¥¬ bootdisk áâ ஥ ¬¥áâ®
|
||||
DEC HL
|
||||
LD DE,.TMP_BUFFER + DEVICE.TBL_Entry-1
|
||||
LD BC,DEVICE.TBL_Entry
|
||||
EX DE,HL
|
||||
LDDR
|
||||
; ¯à®¢¥à塞, ¥ 㢥«¨ç¨«®áì «¨ § 票¥ LDRIVE
|
||||
LD HL,.old_letter
|
||||
LD A,(LDRIVE)
|
||||
CP (HL)
|
||||
JR NC,.no_change_LDRIVE
|
||||
LD A,(HL)
|
||||
LD (LDRIVE),A
|
||||
.no_change_LDRIVE:
|
||||
;
|
||||
;;;;;
|
||||
.restore_page+1:
|
||||
LD A,0
|
||||
OUT (SLOT3),A
|
||||
;;;;;;;;
|
||||
POP AF
|
||||
LD A,(LDRIVE)
|
||||
RET PO
|
||||
EI
|
||||
|
||||
RET
|
||||
.ERROR_BOOTDRV_DIES:
|
||||
LD BC,256*COLORS.PAPER.BLUE + BIOS.LP_OPEN_S
|
||||
LD E,0
|
||||
RST ToBIOS
|
||||
|
||||
LD BC,256*COLORS.PAPER.BLUE + BIOS.LP_CLS_WIN
|
||||
LD DE,0
|
||||
LD HL,#2050
|
||||
RST ToBIOS
|
||||
|
||||
LD A,1
|
||||
OUT (RGMOD),A ; set scr-2
|
||||
|
||||
LD HL,.ERROR_MSG
|
||||
LD DE,#A000
|
||||
LD BC,.ERROR_MSG.size
|
||||
LD A,C
|
||||
LDIR
|
||||
|
||||
LD DE,#10*256 + (80-.ERROR_MSG.size)/2 ;X=0, Y=16
|
||||
LD C,BIOS.LP_SET_PLACE
|
||||
RST ToBIOS
|
||||
|
||||
LD HL,#A000
|
||||
LD DE,0*256 + COLORS.FLASH + COLORS.PAPER.BLUE + COLORS.INC.WHITE
|
||||
LD B,A
|
||||
LD C,BIOS.LP_PRINT_LINE3
|
||||
RST ToBIOS
|
||||
|
||||
.loop: DI
|
||||
HALT
|
||||
JR .loop
|
||||
|
||||
.ERROR_MSG: DZ "Kernel panic! Boot disk lost. Press Ctrl+Alt+Del or RESET."
|
||||
.ERROR_MSG.size EQU $-.ERROR_MSG
|
||||
.get_entry_addr:
|
||||
_CALC_DEVICE_ENTRY DEVICE + #C000
|
||||
RET
|
||||
;
|
||||
.TMP_BUFFER: BLOCK 3,#FF
|
||||
MODULE COLORS
|
||||
;
|
||||
INC:
|
||||
.BLACK EQU #00
|
||||
.BLUE EQU #01
|
||||
.GREEN EQU #02
|
||||
.CYAN EQU #03
|
||||
.RED EQU #04
|
||||
.MAGENTA EQU #05
|
||||
.BROWN EQU #06
|
||||
.LGRAY EQU #07
|
||||
.DGRAY EQU #08
|
||||
.LBLUE EQU #09
|
||||
.LGREEN EQU #0A
|
||||
.LCYAN EQU #0B
|
||||
.LRED EQU #0C
|
||||
.LMAGENT EQU #0D
|
||||
.YELLOW EQU #0E
|
||||
.WHITE EQU #0F
|
||||
PAPER:
|
||||
.BLACK EQU 16*INC.BLACK
|
||||
.BLUE EQU 16*INC.BLUE
|
||||
.GREEN EQU 16*INC.GREEN
|
||||
.CYAN EQU 16*INC.CYAN
|
||||
.RED EQU 16*INC.RED
|
||||
.MAGENTA EQU 16*INC.MAGENTA
|
||||
.BROWN EQU 16*INC.BROWN
|
||||
.LGRAY EQU 16*INC.LGRAY
|
||||
.DGRAY EQU 16*INC.DGRAY
|
||||
.LBLUE EQU 16*INC.LBLUE
|
||||
.LGREEN EQU 16*INC.LGREEN
|
||||
.LCYAN EQU 16*INC.LCYAN
|
||||
.LRED EQU 16*INC.LRED
|
||||
.LMAGENT EQU 16*INC.LMAGENT
|
||||
.YELLOW EQU 16*INC.YELLOW
|
||||
.WHITE EQU 16*INC.WHITE
|
||||
|
||||
FLASH EQU #80
|
||||
ENDMODULE
|
||||
; .old_letter: DB #FF
|
||||
; .old_DRIVE_ID: DB #FF
|
||||
; .new_letter: DB #FF
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
;R12
|
||||
|
||||
|
||||
|
||||
214
DSS/DRV-MAIN.ASM
214
DSS/DRV-MAIN.ASM
@ -191,7 +191,7 @@ A0066: JP DRV_PAGE.NMI ;
|
||||
; <[DRIVE PAGE SWITCH]> ;
|
||||
_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 ;
|
||||
.RETBANK+2: LD BC,SLOT0 + 0*256;
|
||||
.switch: OUT (C),B ;
|
||||
ASSERT $!=84,'-> Portal error!';
|
||||
;Entry point from DSS main page
|
||||
@ -218,6 +218,215 @@ PORTAL.outDRV: ;
|
||||
;
|
||||
|
||||
;
|
||||
|
||||
/*
|
||||
; !!! ‚›‡›‚€’œ ’Ž‹œŠŽ —…<E28094>…‡ RST #10 ¢ DSS-MAIN !!!
|
||||
RESCAN_DRV:
|
||||
AND A
|
||||
LD A,R
|
||||
PUSH AF
|
||||
DI
|
||||
;;
|
||||
IN A,(SLOT3)
|
||||
LD (.restore_page),A
|
||||
LD A,(PORTAL.out_DRV.RETBANK)
|
||||
OUT (SLOT3),A
|
||||
LD A,(BOOTDRV+#C000) ; ã§ «¨ «®£.®¬¥à boot ¤¨áª
|
||||
LD (.BOOT),A ; á®åà ¨«¨
|
||||
.restore_page+1:
|
||||
LD A,0
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD A,(.BOOT)
|
||||
CP 2
|
||||
JR C,.Change ; bootdisk - ¤¨áª¥â ?
|
||||
|
||||
LD C,A
|
||||
ADD A
|
||||
ADD C
|
||||
LD HL,DEVICE
|
||||
LD C,A
|
||||
XOR A
|
||||
LD B,A
|
||||
ADC HL,BC
|
||||
LD DE,.DEVICE
|
||||
LD BC,3 ;!HARDCODE ¤«¨ § ¯¨á¨ ¢ DEVICE
|
||||
LDIR ; á®åà ¨«¨ § ¯¨áì boot-dsk
|
||||
;!TODO âãâ ¯®ª à ¡®â ¥â ¢ ਠ⠧ ¬¥ë ¡ãª¢ë ¤«ï boot-RAM-DRV ¨ HDD
|
||||
LD DE,.DEVICE+1
|
||||
LD HL,HDDRIVE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR Z,.HDD_SYS
|
||||
;
|
||||
LD HL,RMDRIVE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR NZ,.Change
|
||||
;
|
||||
.RMD_SYS:
|
||||
LD A,#60
|
||||
LD (.BOOT_TYPE),A
|
||||
LD A,(.DEVICE)
|
||||
LD HL,RAMDTBL
|
||||
SLA A
|
||||
ADD A,L
|
||||
LD L,A
|
||||
LD A,0
|
||||
ADC A,H
|
||||
LD H,A
|
||||
;’ãâ ¢ HL ¤à¥á ¯¥à¢®£® ¡ ©â § ¯¨á¨ ® boot RAM-DRV
|
||||
LD DE,.RAMDTBL
|
||||
LD BC,RAMDTBL.TBL_Entry
|
||||
LDIR ; á®åà ¨«¨ § ¯¨áì ® RAM-DRV
|
||||
JP .Change
|
||||
;
|
||||
.HDD_SYS:
|
||||
LD A,#80
|
||||
LD (.BOOT_TYPE),A
|
||||
;
|
||||
LD A,(.DEVICE)
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
LD HL,LOGDRV
|
||||
ADD A,L
|
||||
LD L,A
|
||||
LD A,0
|
||||
ADC A,H
|
||||
LD H,A
|
||||
; ’ãâ ¢ HL ¤à¥á ¯¥à¢®£® ¡ ©â § ¯¨á¨ ® boot à §¤¥«¥
|
||||
LD DE,.LOGDRV
|
||||
LD BC,LOGDRV.TBL_Entry
|
||||
LDIR ; á®åà ¨«¨ § ¯¨áì ® HDD à §¤¥«¥
|
||||
|
||||
;JP .Change
|
||||
.Change: CALL INITDVC_RET_DRIVE
|
||||
LD A,(.BOOT)
|
||||
CP 2
|
||||
JR C,.exit ; bootdisk - ¤¨áª¥â ?
|
||||
|
||||
; 3. <20>஢¥à¨âì, ᬥ¨« áì «¨ ¡ãª¢ boot-drv ¨ ¢ë©â¨, ¥á«¨ ¥â.
|
||||
; 4. …᫨ boot HDD ¨ ¥£® ¡ãª¢ã § ï« HDD, â® ¬¥ï¥¬ ¬¥áâ ¬¨ ¨å
|
||||
; § ¯¨á¨ ¢ â ¡«¨æ å DEVICE ¨ LOGDRV.
|
||||
; …᫨ boot HDD ¨ ¥£® ¡ãª¢ã § ï« RAM Drive, â® ¨¤¨ å¥à, ¥ ¬®¦¥â ¡ëâì)).
|
||||
; …᫨ boot FDD â® ¨å¥à ¥ á«ãç¨âáï.
|
||||
; …᫨ boot CD-ROM, â® ¯®¤ã¬ ¥¬, ª®£¤ ¤® í⮣® ¤®¦¨¢ñ¬.
|
||||
; …᫨ boot RAM Drive ¨ ¥£® ¡ãª¢ã § ï« HDD, ⮠㦮 ᬥ¨âì
|
||||
; ¨å ¬¥áâ ¬¨ ¢ â ¡«¨æ¥ DEVICE.
|
||||
; !!!!! çâ® ¡ã¤¥â, ¥á«¨ ¡ãª¢ ¡ãâ-¤¨áª …, ¯®á«¥ à¥áª
|
||||
; § £àã§®çë© à §¤¥« ®ª § «áï ¥¤¨áâ¢¥ë¬ ¢ á¨á⥬¥?
|
||||
; € ¥á«¨ áà §ã ¡ã¤ãâ ¨§¬¥¥¨ï á RAM ¤¨áª ¬¨ ¨ HDD à §¤¥« ¬¨?
|
||||
|
||||
LD A,(.BOOT_TYPE)
|
||||
CP #60 ;!HARDCODE ram drive
|
||||
JR NZ,.restore_HDD
|
||||
.restore_RMD:
|
||||
LD A,(.RAMDTBL+1)
|
||||
LD HL,RAMDTBL+1
|
||||
LD B,RAMDTBL.Size / RAMDTBL.TBL_Entry
|
||||
|
||||
.loop_RMD:
|
||||
CP (HL)
|
||||
JR Z,.found_RMD ; ZF - 諨 ¢ ®¢®© RAMDTBL bootdisk ¯® ¥£® 䨧¨ç¥áª®¬ã ®¬¥àã
|
||||
INC HL
|
||||
INC HL
|
||||
DJNZ .loop_RMD
|
||||
JP .BIG_ERROR ; bootdisk died...
|
||||
|
||||
.found_RMD:
|
||||
LD A,RAMDTBL.Size / RAMDTBL.TBL_Entry
|
||||
SUB B
|
||||
LD (.DEVICE),A ; new bootdisk log.number in RAMDTBL
|
||||
DEC HL
|
||||
LD A,(HL) ; «®£¨ç¥áª¨© ®¬¥à ¤«ï ¯®¨áª ¢ DEVICE
|
||||
LD (.DEVICE_NEW),A ; á®åà 塞
|
||||
|
||||
; ¯®¨áª ®¬¥à § ¯¨á¨ ¯® ¥ñ «®£¨ç¥áª®¬ã ¤¨áªã + ¯à®æ¥¤ãॠ®¡à ¡®â稪
|
||||
LD HL,DEVICE-DEVICE.TBL_Entry
|
||||
LD DE,DEVICE.TBL_Entry
|
||||
LD BC,DEVICE.Size / DEVICE.TBL_Entry
|
||||
.found_RMD.nxt:
|
||||
AND A
|
||||
ADC HL,DE
|
||||
PUSH HL
|
||||
EXX
|
||||
POP HL
|
||||
LD DE,.DEVICE
|
||||
LD B,DEVICE.TBL_Entry
|
||||
CALL COMPARE_BYTES
|
||||
EXX
|
||||
JR Z, found entry
|
||||
DJNZ NZ,.found_RMD.nxt
|
||||
.BIG_ERROR:
|
||||
;;;;
|
||||
|
||||
|
||||
LD BC,DEVICE.Size / DEVICE.TBL_Entry
|
||||
AND A
|
||||
|
||||
; ¤«¨ § ¯¨á¨. áà ¢¨¢ ¥¬ ¯®«®¥ ᮢ¯ ¤¥¨¥ .DEVICE á
|
||||
; ®¤®© ¨§ § ¯¨á¥© DEVICE
|
||||
LD B,DEVICE.TBL_Entry
|
||||
.rmd_loop_search:
|
||||
LD A,(DE)
|
||||
CP (HL)
|
||||
JR NZ,.nxt_loop_
|
||||
INC DE
|
||||
INC HL
|
||||
DJNZ .rmd_loop_search
|
||||
|
||||
POP BC
|
||||
|
||||
|
||||
;JP P,.BIG_ERROR ; ¥á«¨ ¯à®è¥àá⨫¨ § ¯à¥¤¥«ë â ¡«¨æë
|
||||
|
||||
;
|
||||
JP .exit
|
||||
;
|
||||
.restore_HDD:
|
||||
|
||||
;JP .exit
|
||||
;;
|
||||
.exit: LD HL,.Start_buffer
|
||||
LD (HL),#FF
|
||||
LD DE,.Start_buffer+1
|
||||
LD BC,.Size_buffer-1
|
||||
LDIR ; ¯®¬ëâì § ᮡ®î))
|
||||
|
||||
POP AF
|
||||
LD A,(DRV_PAGE.LDRIVE)
|
||||
RET PO
|
||||
EI
|
||||
RET
|
||||
.Start_buffer:
|
||||
.BOOT: DB #FF ; «®£¨ç¥áª¨© ®¬¥à
|
||||
.BOOT_TYPE: DB #FF ; 00, #60, #80, #C0
|
||||
.DEVICE: BLOCK 3,#FF
|
||||
.DEVICE_NEW: BLOCK 3,#FF
|
||||
.LOGDRV: BLOCK 16,#FF
|
||||
.RAMDTBL: BLOCK 2,#FF ; «®£ RMD, 䨧 RMD
|
||||
.Size_buffer EQU $-.Start_buffer
|
||||
|
||||
;‚•Ž„: HL,DE - ¤à¥á áà ¢¨¢ ¥¬ëå ¡«®ª®¢, B - ¤«¨ ¡«®ª
|
||||
;‚›•Ž„: ZF - ¡«®ª¨ ®¤¨ ª®¢ë, ¢ HL ¨ DE ¤à¥á á«¥¤ãî饣® ¡ ©â ¯®á«¥ ᮢ¯ ¢è¥£® ¡«®ª
|
||||
; NZ - ¡«®ª¨ ¥®¤¨ ª®¢ë.
|
||||
COMPARE_BYTES:
|
||||
LD A,(DE)
|
||||
CP (HL)
|
||||
RET NZ
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ COMPARE_BYTES
|
||||
XOR A
|
||||
RET
|
||||
|
||||
*/
|
||||
|
||||
|
||||
DRV_PAGE.LDRIVE: DB #00
|
||||
|
||||
DISPATCH:
|
||||
LD HL,INTDISK
|
||||
LD (ADCALL),HL
|
||||
@ -226,9 +435,6 @@ INITDVC_RET_DRIVE:
|
||||
LD A,(DRV_PAGE.LDRIVE)
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
|
||||
DRV_PAGE.LDRIVE: DB #00
|
||||
|
||||
INCLUDE 'dss/media_drivers/shared-drv.asm'
|
||||
INCLUDE 'dss/media_drivers/ide-drv.asm'
|
||||
|
||||
@ -1,4 +1,16 @@
|
||||
|
||||
;
|
||||
MACRO _CALC_DEVICE_ENTRY tbl_addr
|
||||
LD C,A
|
||||
ADD A,A
|
||||
ADD A,C
|
||||
LD C,A
|
||||
LD B,0
|
||||
LD HL,tbl_addr
|
||||
ADD HL,BC
|
||||
ENDM
|
||||
;
|
||||
|
||||
;
|
||||
MACRO SET_PAGE_X new_page
|
||||
IF OLD_SET_BANK
|
||||
|
||||
@ -169,8 +169,6 @@
|
||||
; 12 (0Ch) - BUSY (DEVICE OPENED)
|
||||
; 13 (0Dh) - RESERVED
|
||||
|
||||
LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å ¤¨áª®¢ ¢ á¨á⥬¥
|
||||
|
||||
; IDE0 EQU #0C1C0
|
||||
; IDE1 EQU #0C1C8
|
||||
PART EQU #C000
|
||||
@ -304,7 +302,6 @@ DRVCLC: INC A
|
||||
; DS 28 ;RESERVED
|
||||
|
||||
|
||||
|
||||
;+00 ;SECTORS PER TRACK
|
||||
;+01 ;TRACKS PER CYLLINDER
|
||||
;+02 ;RESERVED
|
||||
@ -315,24 +312,35 @@ DRVCLC: INC A
|
||||
;+07 ;RESERVED
|
||||
|
||||
|
||||
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
|
||||
LOGDRV: BLOCK .TBL_Entry*LD_DSK,0 ;!FIXIT ¯¥à¥¥á⨠ª ¡ãä¥à ¬ ¢ ª®¥æ áâà ¨æë
|
||||
.TBL_Entry EQU 16
|
||||
.Size EQU $-LOGDRV
|
||||
|
||||
|
||||
SELHDD: PUSH DE
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
;!TEST
|
||||
;SLA A
|
||||
;RLCA
|
||||
;SLA A
|
||||
;LD L,A
|
||||
;LD H,0
|
||||
;RL H
|
||||
;ADD HL,HL
|
||||
;
|
||||
; original
|
||||
LD L,A
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
;
|
||||
EX DE,HL
|
||||
LD IY,LOGDRV
|
||||
ADD IY,DE
|
||||
@ -547,7 +555,7 @@ GBPB_H: PUSH IY
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A'- PAGE
|
||||
; A - HDD NUMBER +#80
|
||||
; A - HDD LOG NUMBER
|
||||
;READ SECTOR
|
||||
LREADH: PUSH IY
|
||||
CALL SELHDD
|
||||
|
||||
@ -332,7 +332,7 @@ INIT_RD:
|
||||
JP 1F
|
||||
.noDRV: POP BC
|
||||
1: INC B
|
||||
LD A,RAMDTBL.Size / 2
|
||||
LD A,RAMDTBL.Size / RAMDTBL.TBL_Entry
|
||||
CP B
|
||||
JR NZ,.initLoop
|
||||
|
||||
@ -346,9 +346,11 @@ INIT_RD:
|
||||
AND A
|
||||
RET
|
||||
|
||||
;!TODO ¢®âªãâì í⨠¢á直¥ â ¡«¨æë ¢ ª®¥æ ä ©« ¨ ªâ¨¢¨à®¢ âì ª ª áâàãªâãàë, ç⮡ ¡¨ ਪ ¬¥ìè¥ ¢¥á¨«
|
||||
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||
; DB RAM_DRIVE_ID, RAM_DRIVE_NUMBER
|
||||
RAMDTBL: DUP MAX_RAMDRIVES * 2
|
||||
; Log Number: DB RAM_DRIVE_ID, RAM_DRIVE_NUMBER
|
||||
RAMDTBL.TBL_Entry EQU 2
|
||||
RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry
|
||||
DB #FF
|
||||
EDUP
|
||||
.Size EQU $-RAMDTBL
|
||||
|
||||
@ -123,7 +123,6 @@
|
||||
; RST 18h. ‚¥ªâ®à ¤¨áª®¢ëå ãáâனáâ¢
|
||||
; ¢å®¤: a=®¬¥à ãáâனá⢠(0-25)
|
||||
;-------------------------------------------------
|
||||
DSS_MAX_DRIVES_AMOUNT EQU 26
|
||||
INTDISK:
|
||||
;R01
|
||||
CP #FF
|
||||
@ -134,13 +133,16 @@ INTDISK:
|
||||
;
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
LD C,A
|
||||
ADD A,A
|
||||
ADD A,C
|
||||
LD C,A
|
||||
LD B,0
|
||||
LD HL,DEVICE
|
||||
ADD HL,BC
|
||||
|
||||
_CALC_DEVICE_ENTRY DEVICE
|
||||
; LD C,A
|
||||
; ADD A,A
|
||||
; ADD A,C
|
||||
; LD C,A
|
||||
; LD B,0
|
||||
; LD HL,DEVICE
|
||||
; ADD HL,BC
|
||||
|
||||
LD A,(HL)
|
||||
INC A
|
||||
JR Z,NODEV
|
||||
@ -153,7 +155,6 @@ INTDISK:
|
||||
POP BC
|
||||
EX (SP),HL
|
||||
RET
|
||||
|
||||
NODEV: POP BC
|
||||
POP HL
|
||||
LD A,DSS_Error.drv.INVALID_DRIVE
|
||||
@ -161,8 +162,9 @@ NODEV: POP BC
|
||||
RET
|
||||
|
||||
PDEVICE DW DEVICE
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*3,#FF
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*.TBL_Entry,#FF
|
||||
.Size: DB #FF
|
||||
.TBL_Entry EQU 3
|
||||
|
||||
FLOPPY EQU #0001
|
||||
FIXED EQU #0002
|
||||
|
||||
@ -1 +1 @@
|
||||
218
|
||||
242
|
||||
@ -7,6 +7,8 @@
|
||||
;
|
||||
|
||||
;
|
||||
LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
|
||||
DSS_MAX_DRIVES_AMOUNT EQU 26
|
||||
DEFINE MAX_RAMDRIVES 16
|
||||
DEFINE NeedSafePort_Y 1
|
||||
DEFINE TABisSPACES 0
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit cc0bf0dfac766dd97e7a5441b523034921cf3830
|
||||
Subproject commit 84a92620cab98867eb5b892d1ae17cd206c2b1bd
|
||||
Loading…
Reference in New Issue
Block a user