diff --git a/DSS/DOS_X.ASM b/DSS/DOS_X.ASM index 5ed58b8..f44cd3f 100644 --- a/DSS/DOS_X.ASM +++ b/DSS/DOS_X.ASM @@ -570,7 +570,7 @@ BACK_CUR_PATH: ; вход: нет ; выход: A - номер последнего лог. диска в системе ;/////////////////////////////////////////////////////////////////////// - INCLUDE 'ScanDRV.asm' + INCLUDE 'ScanDRV.asm' ; INCLUDE 'NScanDRV.asm' ;/////////////////////////////////////////////////////////////////////// ; diff --git a/DSS/DRV-MAIN.ASM b/DSS/DRV-MAIN.ASM index 1f0eebb..9d25bfa 100644 --- a/DSS/DRV-MAIN.ASM +++ b/DSS/DRV-MAIN.ASM @@ -441,17 +441,50 @@ INITDVC_RET_DRIVE: INCLUDE 'dss/media_drivers/fdd-drv.asm' INCLUDE 'dss/media_drivers/ram_disk-drv.asm' -DEVICE_CFG: +; +;------------------------[shared-drv.asm table]------------------------; +DEVICE: ;BLOCK DSS_MAX_DRIVES_AMOUNT * .TBL_Entry,#FF +.TBL_Entry EQU 3 +.Size: EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry ;DB #FF +;----------------------------------------------------------------------; +; + +; +;-------------------------[ IDE-DRV.ASM table]-------------------------; +;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... +;+01 LONG SECTOR OFFSET +;+05 LONG SIZE IN SECTORS +;+09 FREE +;+15 +LOGDRV EQU $ + DEVICE.Size +.TBL_Entry EQU 16 +.Size EQU .TBL_Entry * DSS_MAX_DRIVES_AMOUNT +;----------------------------------------------------------------------; +; + +; +;-----------------------[ram_disk-drv.asm table]-----------------------; +; ТАБЛИЦА СООТВЕТСТВИЯ МЕЖДУ ФИЗИЧЕСКИМ НОМЕРОМ РАМДИСКА И ЕГО RAM-DISK ID +; Log Number: DB RAM_DRIVE_ID, RAM_DRIVE_NUMBER +RAMDTBL EQU $ + DEVICE.Size + LOGDRV.Size +.TBL_Entry EQU 2 +.Size EQU .TBL_Entry * MAX_RAMDRIVES +; RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry +; DB #FF +; EDUP +; .Size EQU $-RAMDTBL +;----------------------------------------------------------------------; +; + + +; 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" +; 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] diff --git a/DSS/Media_drivers/ide-drv.asm b/DSS/Media_drivers/ide-drv.asm index 8c92c56..68a298c 100644 --- a/DSS/Media_drivers/ide-drv.asm +++ b/DSS/Media_drivers/ide-drv.asm @@ -207,22 +207,32 @@ RESR_H LD A,DSS_Error.drv.INVALID_COMMAND // Commands for restart #18 // //////////////////////////////////////////////////////////////////////// -;!FIXIT ---------------------------------------------------------------------------[v] +;--------------------------------------------------------------------[v] ; c=0 Initialization INIT_H: PUSH IY + ;!TEST ;[ ] + XOR A + LD (DRVCLC.count),A + ; Зачистка таблицы. Необязательно, но мало ли чё будет дальше... + ; LD HL,LOGDRV + ; LD (HL),#FF + ; LD DE,LOGDRV+1 + ; LD BC,LOGDRV.Size-1 + ; LDIR + ; LD HL,LOGDRV LD (OFFSECT),HL - ; 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 - + ; DRV_LIST: + ; +0 LEN + ; +1 FDD COUNT + ; +2 HDD COUNT + ; +3 CDROM COUNT + ; +4 RESERVED (28) + ; IN A,(SLOT3) LD C,A LD A,SYS_PAGE @@ -246,91 +256,46 @@ NX_DVCI: PUSH BC INC C JR C,NX_DVCI DJNZ NX_DVCI - - -; 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) - LD DE,LOGDRV - XOR A - SBC HL,DE - RET Z - LD DE,LD_DSK -DRVCLC: INC A - SBC HL,DE - JR NZ,DRVCLC + ;!TEST + ; LD HL,(OFFSECT) + ; LD DE,LOGDRV + ; XOR A + ; SBC HL,DE + ; RET Z + ; LD DE,LOGDRV.TBL_Entry +DRVCLC: ; INC A + ; SBC HL,DE + ; JR NZ,DRVCLC + ; +.count+1: LD A,0 + ; AND A RET +;---------------------------------------------------------------------[^] -;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 - - -;+00 ;SECTORS PER TRACK -;+01 ;TRACKS PER CYLLINDER -;+02 ;RESERVED -;+03 ;HDD/DRIVE/LBA -;+04 ;SECTOR PER CYLINDER LOW -;+05 ;SECTOR PER CYLINDER HIGH -;+06 ;RESERVED -;+07 ;RESERVED - - -;+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 +; ;+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 + ; SLA A + ; RLA + ; SLA A + ; LD L,A + ; LD H,0 + ; RL H + ; ADD HL,HL ; ; original LD L,A @@ -428,7 +393,7 @@ HGETPRM: LD A,DSS_Error.drv.GENERAL_FAILURE SCF RET NZ - + ; PUSH IX PUSH IY LD H,0 @@ -440,17 +405,15 @@ HGETPRM: LD C,L LD IY,LOGDRV 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 - + ; перетасовка регистров с результатом от BIOS EX DE,HL LD C,E LD E,D @@ -458,8 +421,7 @@ HGETPRM: LD A,B LD B,D EXX - - ;SECTORS ON LOGICAL DISK + ; SECTORS ON LOGICAL DISK LD E,(IY+5) LD D,(IY+6) LD L,(IY+7) @@ -468,37 +430,7 @@ HGETPRM: 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 @@ -632,32 +564,56 @@ HIGHDOS: LD (IX+2),D LD (IX+3),L LD (IX+4),H -; LD DE,(CURSECL) -; LD HL,(CURSECH) -; LD (IX+1),E ;START DISK -; LD (IX+2),D -; LD (IX+3),L -; LD (IX+4),H LD E,(IY+12) LD D,(IY+13) LD L,(IY+14) LD H,(IY+15) - LD (IX+5),E ;SIZE DISK + LD (IX+5),E ;SIZE DISK LD (IX+6),D LD (IX+7),L LD (IX+8),H + ;!TEST Подстраховка от переполнения таблицы LOGDRV + LD A,(DRVCLC.count) + INC A + CP DSS_MAX_DRIVES_AMOUNT+1 + RET NC + LD (DRVCLC.count),A + ; LD A,(DRV_NUM) LD (IX+0),A - LD DE,LD_DSK ; DSKITEM + LD DE,LOGDRV.TBL_Entry ;DSKITEM ADD IX,DE LD (OFFSECT),IX -NXTPART LD DE,#10 +NXTPART: + LD DE,#10 ;!HARDCODE SZ_PTE - Size of a partition table entry ADD IY,DE POP BC DJNZ DOSAGA AND A RET + + ; +NOEXTDS: + CP #0F + JR Z,SUBLEV + CP #0E + JR Z,HIGHDOS + CP 6 + JR Z,HIGHDOS + CP 4 + JR Z,MEDIDOS + CP 1 + JR Z,EASYDOS + POP BC + OR A + RET Z +NODEFIN: + SCF + RET + ; + + PARTIT: IN A,(SLOT3) PUSH AF LD A,SHARED_PAGE @@ -667,28 +623,31 @@ PARTIT: IN A,(SLOT3) OUT (SLOT3),A RET -PARTIT1 LD IX,0 +PARTIT1: + LD IX,0 LD DE,0 LD (EXTDOSL),DE ;R01 LD (EXTDOSH),IX ;R01 -PARTIT2 LD (CURSECL),DE +PARTIT2: + LD (CURSECL),DE LD (CURSECH),IX CALL LOADSEC ;!TEST ;RET C ; for absent drive ; - LD HL,(PART+510) ;!HARDCODE + LD HL,(PART+510) ;!HARDCODE Signature word LD DE,#AA55 AND A SBC HL,DE JR NZ,NODEFIN - LD IY,PART+#01BE ;!HARDCODE - LD B,4 -DOSAGA PUSH BC + ; + LD IY,PART+#01BE ;!HARDCODE MBR: Offset of partition table in the MBR + LD B,4 ;!HARDCODE MBR: Number of entries in the partition table +DOSAGA: PUSH BC LD A,(IY+4) CP 5 JR NZ,NOEXTDS -SUBLEV PUSH IY +SUBLEV: PUSH IY LD DE,(CURSECL) LD IX,(CURSECH) PUSH DE @@ -701,22 +660,7 @@ SUBLEV PUSH IY CALL LOADSEC POP IY JP NXTPART -NOEXTDS CP #0F - JP Z,SUBLEV - CP #0E - JP Z,HIGHDOS - CP 6 - JP Z,HIGHDOS - CP 4 - JP Z,MEDIDOS - CP 1 - JP Z,EASYDOS - POP BC - OR A - RET Z -NODEFIN SCF - RET - + ; EXTDOS: LD HL,(EXTDOSL) LD DE,(EXTDOSH) LD A,L @@ -732,8 +676,9 @@ EXTDOS: LD HL,(EXTDOSL) LD (EXTDOSH),HL LD IX,(EXTDOSH) JP PARTIT2 - -EXTDOS2 LD IX,(EXTDOSL) + ; +EXTDOS2: + LD IX,(EXTDOSL) ADD IX,DE PUSH IX LD DE,(EXTDOSH) @@ -743,7 +688,8 @@ EXTDOS2 LD IX,(EXTDOSL) POP DE JP PARTIT2 -LOADSEC PUSH IY +LOADSEC: + PUSH IY LD IX,(CURSECL) LD HL,(CURSECH) LD DE,PART diff --git a/DSS/Media_drivers/ram_disk-drv.asm b/DSS/Media_drivers/ram_disk-drv.asm index 87bb46e..c907f7a 100644 --- a/DSS/Media_drivers/ram_disk-drv.asm +++ b/DSS/Media_drivers/ram_disk-drv.asm @@ -311,9 +311,15 @@ INIT_RD: ; JR NC,.loop ; LD (S_P_P),A + ; Зачистка таблицы. Необязательно, но мало ли чё будет дальше... ;[ ] + ; LD HL,RAMDTBL + ; LD (HL),#FF + ; LD DE,RAMDTBL+1 + ; LD BC,RAMDTBL.Size-1 + ; LDIR + LD BC,#0*256 + BIOS.GET_RAMD_ST ; Получение идентификатора блока, назначенного на RAM-Disk LD DE,RAMDTBL - .initLoop: PUSH BC LD A,B @@ -345,16 +351,16 @@ INIT_RD: ; LD HL,ENDDRVR AND A RET - -;!TODO воткнуть эти всякие таблицы в конец файла и активировать как структуры, чтоб бинарник меньше весил -; ТАБЛИЦА СООТВЕТСТВИЯ МЕЖДУ ФИЗИЧЕСКИМ НОМЕРОМ РАМДИСКА И ЕГО RAM-DISK ID -; 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 -; + +; ; +; ; ТАБЛИЦА СООТВЕТСТВИЯ МЕЖДУ ФИЗИЧЕСКИМ НОМЕРОМ РАМДИСКА И ЕГО RAM-DISK ID +; ; 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 +; ; ; 00 - GET DEVICE PARAMETERS @@ -461,8 +467,8 @@ IOCTL_RD: ; RET GET_RAMDRV_NUM: + ADD A,A LD BC,RAMDTBL - SLA A ADD A,C LD C,A LD A,0 diff --git a/DSS/Media_drivers/shared-drv.asm b/DSS/Media_drivers/shared-drv.asm index c4c3541..3ec6149 100644 --- a/DSS/Media_drivers/shared-drv.asm +++ b/DSS/Media_drivers/shared-drv.asm @@ -162,9 +162,9 @@ NODEV: POP BC RET PDEVICE DW DEVICE -DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*.TBL_Entry,#FF -.Size: DB #FF -.TBL_Entry EQU 3 +; DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT * .TBL_Entry,#FF +; .Size: DB #FF +; .TBL_Entry EQU 3 FLOPPY EQU #0001 FIXED EQU #0002 @@ -210,6 +210,12 @@ INITDVC: XOR A LD (DRV_PAGE.LDRIVE),A ; сбр. ячейку LD HL,DEVICE LD (PDEVICE),HL ; восст. ячейку + ; Зачистка таблицы. Необязательно, но мало ли чё будет дальше... ;[ ] + LD HL,DEVICE + LD (HL),#FF + LD DE,DEVICE+1 + LD BC,DEVICE.Size + LOGDRV.Size + RAMDTBL.Size - 1 + LDIR ; FDD девайсы CALL FDDRIVE.INIT ; узнать число FDD-девайсов LD DE,FDDRIVE ; адрес обработчика тек. девайса @@ -232,10 +238,19 @@ MAKEDVC: LD C,A LD HL,DRV_PAGE.LDRIVE ; ячейка номера посл. диска ADD A,(HL) LD (HL),A - LD A,C - LD C,0 ; сбр. + ;!TEST ;[ ] оптимизировать было лень + CP DSS_MAX_DRIVES_AMOUNT+1 + JR C,1F + LD (HL),DSS_MAX_DRIVES_AMOUNT + SUB DSS_MAX_DRIVES_AMOUNT + NEG + ADD C + JP 2F + ; +1: LD A,C OR A RET Z ; нет девайсов +2: LD C,0 ; сбр. LD HL,(PDEVICE) ; тек. полож. в таблице .loop: LD (HL),C ; номер лог.драйва этого устройства INC HL diff --git a/DSS/NScanDRV.ASM b/DSS/NScanDRV.ASM new file mode 100644 index 0000000..a94eb3e --- /dev/null +++ b/DSS/NScanDRV.ASM @@ -0,0 +1,180 @@ +; !TODO запоминать прерывания, отключать на старте, восстанавливать на выходе +SCANDRV: +;1 [-----------] [-----------] [-----------] [-----------] [-----------] + ; LD A,(LDRIVE) + ; LD (.old_ldrive),A + ; LD A,(FATCASH.Update) + ; OR A + ; CALL NZ,WR_FAT + + 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 + LD C,Dss.DRV.RescanDRV + RST ToDSS.DRV + LD (LDRIVE),A + ;EI + ; +; [-----------] + +;4 [-----------] [-----------] [-----------] [-----------] [-----------] +.old_DRIVE_ID+1: + LD A,0 + CALL SETBOOT + JR C,.ERROR_BOOTDRV_DIES + LD (.new_letter),A + ; + LD A,(.old_letter) + LD (BOOTDRV),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 + ;!TEST + LD HL,.old_letter + LD A,(LDRIVE) + CP (HL) + JR NC,.no_change_LDRIVE + LD A,(HL) + LD (LDRIVE),A + ; +; .old_ldrive+1: + ;LD L,0 + ;LD A,(LDRIVE) + ;CP L + ;JR NC,.no_change_LDRIVE + ;LD A,L + ;LD (LDRIVE),A + ; +.no_change_LDRIVE: + ; + ; DEC A + ; CALL DISKINF + ; LD A,(BOOTDRV) + ; CALL CHNDISK + ;;;;; +.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.CGA.PAPER.BLUE + BIOS.LP_OPEN_S + LD E,0 + RST ToBIOS + + LD BC,256*COLORS.CGA.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.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE + LD B,A + LD C,BIOS.LP_PRINT_LINE3 + RST ToBIOS + +.loop: DI +; .loop: LD A,R +; AND 7 +; OUT (BorderColor),A + 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 + +; .old_letter: DB #FF +; .old_DRIVE_ID: DB #FF +; .new_letter: DB #FF + + + +/* +;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... +;+01 LONG SECTOR OFFSET +;+05 LONG SIZE IN SECTORS +;+09 LONG Volume Serial Number in HEX ; [ ] ;!TODO +;+13 WORD FREE +;+15 BYTE FREE + +LOGDRV: BLOCK .TBL_Entry*LD_DSK,0 ; ld_dsk = 16 +.TBL_Entry EQU 16 +.Size EQU $-LOGDRV + + +DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT * .TBL_Entry,#FF +.Size: DB #FF +.TBL_Entry EQU 3 +*/ \ No newline at end of file diff --git a/DSS/build.txt b/DSS/build.txt index 2c136b2..3c7d064 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -302 \ No newline at end of file +312 \ No newline at end of file diff --git a/DSS/defines.inc b/DSS/defines.inc index fd0b202..acc2c34 100644 --- a/DSS/defines.inc +++ b/DSS/defines.inc @@ -8,7 +8,7 @@ ; ; -LD_DSK EQU 16 ; максимальное количество логических HDD дисков в системе +;LD_DSK EQU 16 ; максимальное количество логических HDD дисков в системе DSS_MAX_DRIVES_AMOUNT EQU 26 DEFINE MAX_RAMDRIVES 16 DEFINE NeedSafePort_Y 1 diff --git a/Shared_Includes b/Shared_Includes index a4f1028..6eacd64 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit a4f102897a7fa7488c1e64cf8329f5659c6b0d6b +Subproject commit 6eacd6475231a504fae4ed03a12f5cd1cb166ac0