diff --git a/DSS/DOS-MAIN.ASM b/DSS/DOS-MAIN.ASM index 6fc4f92..7cdcd92 100644 --- a/DSS/DOS-MAIN.ASM +++ b/DSS/DOS-MAIN.ASM @@ -268,7 +268,7 @@ F_START: CALL DEPLOY ;R07 ;эта процедура затрётся после исполнения RET C ;R10 - CALL KINIT + CALL KINIT CALL PRINT_INIT LD C,0 RST #30 @@ -283,8 +283,7 @@ F_START: ;R05 .saveDRV+1: LD A,0 - LD B,1 - LD C,Dss.BootDSK + LD BC,1*256 + Dss.BootDSK RST #10 EI diff --git a/DSS/IDE_DRV0.ASM b/DSS/IDE_DRV0.ASM index 7acbb78..f098010 100644 --- a/DSS/IDE_DRV0.ASM +++ b/DSS/IDE_DRV0.ASM @@ -197,14 +197,17 @@ RESR_H LD A,DSS_Error.drv.INVALID_COMMAND INIT_H PUSH IY LD HL,LOGDRV LD (OFFSECT),HL - LD IX,DEVICE_CFG - LD C,#5F + LD IX,DEVICE_CFG ;!TODO сделать RAMDRIVE тут в DEVICE_CFG ? + LD C,BIOS.DRV_LIST RST ToBIOS XOR A - LD B,(IX+2) ;HDD - CP B + ;!TEST + ;LD B,(IX+2) ;HDD + ;CP B + CP (IX+2) JR Z,NO_HARDS - LD C,#80 + LD BC,4*256 + #80 ;!HARDCODE 4 - количество винтов, 80 - ID винта + NX_DVCI PUSH BC LD A,C LD (DRV),A @@ -234,7 +237,7 @@ NX_DVCI PUSH BC ;R02 CALL YEP_DRV ;R02 OUT (C),B ;R02 CALL NZ,PARTIT -NO_HARDS +NO_HARDS: POP IY LD HL,(OFFSECT) LD DE,LOGDRV @@ -310,7 +313,7 @@ SPCLH_H EQU 6 ; DB #FF ;SECTOR PER CYLINDER HIGH ;06 ; DB #FF ;RESERVED ;07 -LOGDRV DS 12*LD_DSK +LOGDRV BLOCK 12*LD_DSK,0 ;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... ;+01 LONG SECTOR OFFSET ;+05 LONG SIZE IN SECTORS @@ -624,6 +627,9 @@ PARTIT1 LD IX,0 PARTIT2 LD (CURSECL),DE LD (CURSECH),IX CALL LOADSEC + ;!TEST + RET C ;FOR IDE2..3 + ; LD HL,(PART+510) LD DE,#AA55 AND A diff --git a/DSS/RAM_DRV1.ASM b/DSS/RAM_DRV1.ASM index 8325206..b266f7f 100644 --- a/DSS/RAM_DRV1.ASM +++ b/DSS/RAM_DRV1.ASM @@ -189,34 +189,19 @@ ; 13 (0Dh) - RESERVED -; MACRO _mGET_RAMDRV_NUM -; PUSH BC -; LD BC,RAMDTBL -; SLA A -; ADD A,C -; LD C,A -; LD A,0 -; ADC A,B -; LD B,A -; INC BC -; LD A,(BC) -; OR #60 -; POP BC +; MACRO CALL GET_RAMDRV_NUM +; LD BC,RAMDTBL +; SLA A +; ADD A,C +; LD C,A +; LD A,0 +; ADC A,B +; LD B,A +; INC BC +; LD A,(BC) +; OR #60 ;!HARDCODE сделать номера разных устройств через метки ; ENDM - MACRO _mGET_RAMDRV_NUM - LD BC,RAMDTBL - SLA A - ADD A,C - LD C,A - LD A,0 - ADC A,B - LD B,A - INC BC - LD A,(BC) - OR #60 ;!HARDCODE сделать номера разных устройств через метки - ENDM - ; parser RMDRIVE: @@ -273,7 +258,7 @@ GBPB_RD LD IX,0 ; A - DRIVE READ_RD: PUSH BC - _mGET_RAMDRV_NUM + CALL GET_RAMDRV_NUM POP BC LD C,BIOS.DRV_READ JP ToBIOS @@ -282,7 +267,7 @@ READ_RD: ; RET LREAD_RD: PUSH BC - _mGET_RAMDRV_NUM + CALL GET_RAMDRV_NUM POP BC LD C,BIOS.DRV_READ_LONG JP ToBIOS @@ -297,7 +282,7 @@ LREAD_RD: ; A - DRIVE WRITE_RD: PUSH BC - _mGET_RAMDRV_NUM + CALL GET_RAMDRV_NUM POP BC LD C,BIOS.DRV_WRITE JP ToBIOS @@ -307,7 +292,7 @@ WRITE_RD: LWRITE_RD: PUSH BC - _mGET_RAMDRV_NUM + CALL GET_RAMDRV_NUM POP BC LD C,BIOS.DRV_WRITE_LONG JP ToBIOS @@ -428,7 +413,7 @@ IOCTL_RD: EX AF,AF' LD A,L - _mGET_RAMDRV_NUM + CALL GET_RAMDRV_NUM PUSH AF PUSH AF EX AF,AF' @@ -473,5 +458,17 @@ IOCTL_RD: ; AND A ; RET +GET_RAMDRV_NUM: + LD BC,RAMDTBL + SLA A + ADD A,C + LD C,A + LD A,0 + ADC A,B + LD B,A + INC BC + LD A,(BC) + OR #60 ;!HARDCODE сделать номера разных устройств через метки + RET ENDDRVR EQU $ ; \ No newline at end of file