diff --git a/BOOT/DSSBOOT.ASM b/BOOT/DSSBOOT.ASM index 074882d..f025e93 100644 --- a/BOOT/DSSBOOT.ASM +++ b/BOOT/DSSBOOT.ASM @@ -30,7 +30,7 @@ DRIVE: DI LD (DRIVE),A LD C,BIOS.EXT_VERSION - RST #18 + RST ToBIOS_18 LD A,INCORR JR C,FAIL LD A,(DRIVE) @@ -45,9 +45,9 @@ GOOD_DRIVE: LD DE,#8200 LD HL,0 LD IX,2 - LD BC,2*256+BIOS.DRV_READ + LD BC,2*256 + BIOS.DRV_READ LD A,(DRIVE) - RST #18 + RST ToBIOS_18 JR C,NULL JP CONTINU @@ -88,37 +88,37 @@ PRINTX CP #0D JR Z,CR_ CP #0A JR Z,LF_ - LD BC,#0182 - RST #18 + LD BC,1*256 + BIOS.LP_PRINT_SYM + RST ToBIOS_18 RET -CR_ LD C,#8E - RST #18 +CR_ LD C,BIOS.LP_GET_PLACE + RST ToBIOS_18 LD E,0 LD C,#84 - RST #18 + RST ToBIOS_18 RET -LF_ LD C,#8E - RST #18 +LF_ LD C,BIOS.LP_GET_PLACE + RST ToBIOS_18 LD A,#1F CP D JR NZ,LF2 PUSH DE PUSH HL LD DE,#0020 - LD BC,#018A - RST #18 + LD BC,1*256 + BIOS.LP_SCROLL_UD + RST ToBIOS_18 LD DE,#1F00 - LD C,#84 - RST #18 + LD C,BIOS.LP_SET_PLACE + RST ToBIOS_18 LD A," " - LD BC,#5082 - RST #18 + LD BC,#50 + BIOS.LP_PRINT_SYM + RST ToBIOS_18 POP HL POP DE DEC D LF2 INC D - LD C,#84 - RST #18 + LD C,BIOS.LP_SET_PLACE + RST ToBIOS_18 RET ;R01 ;R01 End @@ -155,8 +155,8 @@ CONTINU LD (DISKL),HL LD (DISKH),HL - LD BC,1*256+BIOS.GetMem - RST #18 ;GET PAGE FOR DOS + LD BC,1*256 + BIOS.GetMem + RST ToBIOS_18 ;GET PAGE FOR DOS LD (BANKDOS),A CALL GET_BPB ;READ BPB LD A,ERRIBPB @@ -290,9 +290,9 @@ YEPDOS LD E,(IX+08) LD (DISKL),IX LD (DISKH),HL LD DE,BOOT - LD BC,1*256+BIOS.DRV_READ + LD BC,1*256 + BIOS.DRV_READ LD A,(DRIVE) - RST #18 + RST ToBIOS_18 POP BC LD A,C RET @@ -300,13 +300,13 @@ YEPDOS LD E,(IX+08) SET_PRM PUSH BC LD A,B LD C,BIOS.DRV_GET_PAR - RST #18 + RST ToBIOS_18 LD A,(BOOT.S_P_T) LD L,A POP AF PUSH AF LD C,BIOS.DRV_SET_PAR - RST #18 + RST ToBIOS_18 POP BC LD A,C RET @@ -314,9 +314,9 @@ SET_PRM PUSH BC GET_BPB LD IX,#0000 LD HL,#0000 LD DE,BOOT - LD BC,1*256+BIOS.DRV_READ + LD BC,1*256 + BIOS.DRV_READ LD A,(DRIVE) - RST #18 + RST ToBIOS_18 RET C LD A,(DRIVE) LD B,A @@ -416,9 +416,9 @@ BPB_FAT ADC HL,BC ;HL:IX LD DE,FAT - LD BC,3*256+BIOS.DRV_READ + LD BC,3*256 + BIOS.DRV_READ LD A,(DRIVE) - RST #18 + RST ToBIOS_18 RET C LD HL,0 LD (FATCASH),HL @@ -447,10 +447,10 @@ NEXTSEC PUSH AF ;HL:IX PUSH IX PUSH HL - LD BC,1*256+BIOS.DRV_READ + LD BC,1*256 + BIOS.DRV_READ LD DE,DIR LD A,(DRIVE) - RST #18 + RST ToBIOS_18 CALL SEARCH POP HL POP IX @@ -510,21 +510,21 @@ LD_FILE PUSH HL LD A,(BOOT.S_P_C) CP #20 JR C,SMCLUS - LD BC,#2052 + LD BC,#20*256 + BIOS.DRV_READ_LONG LD A,(BANKDOS) EX AF,AF' LD A,(DRIVE) - RST #18 + RST ToBIOS_18 POP HL AND A RET SMCLUS LD B,A - LD C,#52 + LD C,BIOS.DRV_READ_LONG LD A,(BANKDOS) EX AF,AF' LD A,(DRIVE) - RST #18 + RST ToBIOS_18 LD HL,(READMEM) LD DE,(CLU_LEN) ADD HL,DE @@ -670,9 +670,9 @@ NOINX2 ADD IX,BC POP IX POP HL LD DE,FAT - LD BC,#0355 + LD BC,3*256 + BIOS.DRV_READ LD A,(DRIVE) - RST #18 + RST ToBIOS_18 POP HL RET diff --git a/DSS/DOS-MAIN.ASM b/DSS/DOS-MAIN.ASM index f3c1b1f..942a6d5 100644 --- a/DSS/DOS-MAIN.ASM +++ b/DSS/DOS-MAIN.ASM @@ -277,8 +277,8 @@ F_START: RST #30 ;CALL INITDVC ;R05 ;R05 - LD C,#00 - RST #18 + LD C,Dss.DRV.Init + RST ToDSS.DRV LD (LDRIVE),A ;R05 @@ -437,6 +437,14 @@ BUFFER EQU BUFFERSplace.Buffer SECBUF EQU BUFFER CLEAR_ZONE.size EQU _sBuffers + DISPLAY "--- --- --- --- --- --- --- ---" + DISPLAY "BUFFERSplace.BootSector ",/H,BUFFERSplace.BootSector + DISPLAY "BootSector ", /H, BootSector + DISPLAY "EXEBUFF ", /H, EXEBUFF + DISPLAY "Size ", /H, EXEBUFF-BootSector + DISPLAY "--- --- --- --- --- --- --- ---" + + /* ;R11 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ;!TEST diff --git a/DSS/DOS5.ASM b/DSS/DOS5.ASM index 647498e..7db6a7c 100644 --- a/DSS/DOS5.ASM +++ b/DSS/DOS5.ASM @@ -155,11 +155,11 @@ DELETE LD DE,MASKARE RET C DELFILE LD A,DIRPAGE CALL BANK - PUSH AF + ;PUSH AF LD (IX+_sFM.NAME),#E5 LD E,(IX+_sFM.ST_CLUSTER) LD D,(IX+_sFM.ST_CLUSTER+1) - POP AF + ;POP AF OUT (SLOT3),A LD A,E OR D @@ -656,8 +656,8 @@ CHNDISK: ;????? R10 OPENDSK: PUSH AF - LD C,1 - RST #18 + LD C,Dss.DRV.Open + RST ToDSS.DRV POP BC JP C,.error LD A,B @@ -802,7 +802,7 @@ FINDDIR LD A,DIRPAGE ADDSPEC LD E,XL LD D,XH LD HL,DIRSPEC+1 - LD BC,DIRSPEC.DEPTH + LD BC,DIRSPEC.DEPTH-1 XOR A CPIR ;!FIXIT нет проверки на завершение по BC=0 DEC HL @@ -879,11 +879,11 @@ LOADDIR: CALL BANK PUSH AF ;!FIXIT слишком долго - LD HL,#C000 - LD DE,#C001 - LD BC,#3FFF - LD (HL),L - LDIR + ; LD HL,#C000 + ; LD DE,#C001 + ; LD BC,#3FFF + ; LD (HL),L + ; LDIR ; LD A,(FatBuffer.DRIVE) LD (IY+_sFM.DRIVE),A @@ -911,9 +911,9 @@ LROTDIR LD HL,(FatBuffer.DIR_FRH) ADD A,B LD B,A RTD1 LD A,(FatBuffer.DRIVE) - LD C,5 LD DE,DIR - RST #18 + LD C,Dss.DRV.Read + RST ToDSS.DRV POP AF OUT (SLOT3),A AND A @@ -952,9 +952,9 @@ SROTDIR LD HL,(FatBuffer.DIR_FRH) ADD A,B LD B,A RTD1S LD A,(FatBuffer.DRIVE) - LD C,6 LD DE,DIR - RST #18 + LD C,Dss.DRV.Write + RST ToDSS.DRV POP AF OUT (SLOT3),A AND A @@ -1634,7 +1634,7 @@ MKD04 EX DE,HL INC DE LD (HL),0 LD BC,512-65 - LDIR + LDIR ;!FIXIT нужно ли так много грохать? POP HL CALL NSECTOR LD A,(BootSector.S_P_C) @@ -1646,11 +1646,10 @@ MKD12 PUSH AF IN A,(SLOT0) OUT (SLOT3),A ; - LD DE,SECBUF+#C000 - LD B,1 LD A,(FatBuffer.DRIVE) - LD C,6 - RST #18 + LD DE,SECBUF+#C000 + LD BC,1*256 + Dss.DRV.Write + RST ToDSS.DRV ; POP AF OUT (SLOT3),A @@ -1659,7 +1658,7 @@ MKD12 PUSH AF LD DE,SECBUF+1 LD BC,511 LD (HL),0 - LDIR + LDIR ;!FIXIT нужно ли так много грохать? POP IX POP HL INC IX @@ -1706,9 +1705,9 @@ RMD12 PUSH AF OUT (SLOT3),A LD DE,SECBUF+#C000 - LD BC,#0105 + LD BC,1*256 + Dss.DRV.Read LD A,(FatBuffer.DRIVE) - RST #18 + RST ToDSS.DRV POP AF OUT (SLOT3),A diff --git a/DSS/DOS_FM.ASM b/DSS/DOS_FM.ASM index e49a52a..1fe37a6 100644 --- a/DSS/DOS_FM.ASM +++ b/DSS/DOS_FM.ASM @@ -177,7 +177,7 @@ BLOK_RD PUSH BC LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER LD C,A LD B,0 - CALL DIV32 + CALL DIV32 ;!FIXIT заменить вызов HLDE/BC на HLDE/C LD B,XH LD C,XL PUSH HL ;RESIDUE @@ -218,8 +218,8 @@ BLOKRD3 LD A,B ; / BLOKRD4 LD DE,(READMEM) LD A,(FatBuffer.DRIVE) LD B,C - LD C,5 - RST #18 + LD C,Dss.DRV.Read + RST ToDSS.DRV JP C,BLOKRD0 POP BC LD HL,(READMEM) @@ -256,7 +256,7 @@ BLOKRD7 EX DE,HL LD A,(FatBuffer.DRIVE) LD B,C LD C,5 - RST #18 + RST ToDSS.DRV JP C,BLOKRD0 POP BC LD HL,(READMEM) @@ -345,8 +345,8 @@ BLOKWR3 LD A,B BLOKWR4 LD DE,(READMEM) LD A,(FatBuffer.DRIVE) LD B,C - LD C,6 - RST #18 + LD C,Dss.DRV.Write + RST ToDSS.DRV JP C,BLOKWR0 POP BC LD HL,(READMEM) @@ -387,8 +387,8 @@ BLOKWR9 POP BC LD DE,(READMEM) LD A,(FatBuffer.DRIVE) LD B,C - LD C,6 - RST #18 + LD C,Dss.DRV.Write + RST ToDSS.DRV JP C,BLOKWR0 POP BC LD HL,(READMEM) @@ -625,8 +625,9 @@ WRITE LD (R_POINT),HL OR A RR L RR D - RR E ;HL:DE FP (in sectors) - ; BC FP residue (in bytes) + RR E + ; HL:DE FP (in sectors) + ; BC FP residue (in bytes) LD A,B OR C JP NZ,WOV1 diff --git a/DSS/DOS_X.ASM b/DSS/DOS_X.ASM index 431037c..cf08e0e 100644 --- a/DSS/DOS_X.ASM +++ b/DSS/DOS_X.ASM @@ -71,9 +71,9 @@ SETBOOT: LD C,0 .loop: PUSH BC LD A,C - LD BC,#0008 LD DE,#55AA - RST #18 + LD BC,256*0 + Dss.DRV.GenIOCTL + RST ToDSS.DRV POP BC JR C,.NoSupport EX AF,AF' ;PHISICAL DRIVE NUMBER @@ -100,8 +100,8 @@ SETBOOT: /* CHNDISK: PUSH AF - LD C,1 - RST #18 + LD C,Dss.DRV.Open + RST ToDSS.DRV POP BC JP C,NDISK11 LD A,B @@ -181,30 +181,24 @@ TCOUNT: DW #0000 ; !FIXIT чёт не используется TESTDSK LD A,(FatBuffer.DRIVE) - LD C,3 - RST #18 + LD C,Dss.DRV.MediaCheck + RST ToDSS.DRV OR A RET Z RD_BPB LD C,SLOT3 IN B,(C) PUSH BC -;!!!!! лучше оставить как в оригинале, потому что вызов этой функции -; может в дальнейшем понадобиться, и пускай она сама достаёт переменную DRIVE - ; ex af,af' ;1451 - ; in a,(SLOT0) ;1452 - ; out (SLOT3),a ;1454 - ; ld de,SECBUF+#C000 ;1456 - ; ex af,af' ;1459 IN A,(SLOT0) OUT (SLOT3),A -;R08 LD DE,BOOT+#C000 - LD DE,SECBUF+#C000 ;R08 - LD A,(FatBuffer.DRIVE) -;!!!!! ------------------------------ + ;R08 + ;LD DE,BOOT+#C000 + LD DE,SECBUF+#C000 + ;R08 + LD A,(FatBuffer.DRIVE) ;вызов RD_BPB может в дальнейшем понадобиться, пускай она сама достаёт переменную DRIVE - LD C,4 - RST #18 + LD C,Dss.DRV.GetBPB + RST ToDSS.DRV POP BC OUT (C),B JP C,RDERR1 @@ -226,10 +220,16 @@ RD_BPB LD C,SLOT3 LD A,(IY+_sBOOT_SEC.ID_FORM) CP #F0 JP C,ERR_BPB - LD HL,0 ; calc. first sector FAT - LD E,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec - LD D,(IY+_sBOOT_SEC.RESERVE+1) - ADD HL,DE + + ;!TEST + ;LD HL,0 ; calc. first sector FAT + ;LD E,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec + ;LD D,(IY+_sBOOT_SEC.RESERVE+1) + ;ADD HL,DE + LD L,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec + LD H,(IY+_sBOOT_SEC.RESERVE+1) + ; + ; LD E,(IY+#1C) ;Hidden sec ; LD D,(IY+#1D) ; ADD HL,DE @@ -311,15 +311,15 @@ R_BPBL1 DJNZ R_BPBL1 FID LD A,(HL) INC HL - CP #20 + CP ' ' JR Z,FID - CP "1" + CP '1' JP NZ,ERR_BPB LD A,(HL) - CP "6" ; FAT16 + CP '6' ; FAT16 LD HL,#FFFF JR Z,BPB_FAT - CP "2" ; FAT12 + CP '2' ; FAT12 JP NZ,ERR_BPB LD HL,#0FFF BPB_FAT @@ -356,7 +356,7 @@ BPB_L1: ; calc. sector per cylinder DEC BC JP HDDBIG HDDSMAL: -; AND A ;тут CF полюбас сброшен должен быть + ;AND A ;тут CF полюбас сброшен должен быть SBC HL,DE LD BC,0 HDDBIG LD A,(BootSector.S_P_C) @@ -376,8 +376,8 @@ S4C02 INC HL ; LD IX,(FAT_FRM) ; LD B,3 ; LD A,(DRIVE) -; LD C,5 -; RST #18 +; LD C,Dss.DRV.Read +; RST ToDSS.DRV ; JP C,RDERR1 LD HL,0 LD (FATCASH),HL @@ -443,7 +443,7 @@ FatBuffer: ; DIRSPEC: DB '\' - BLOCK DIRSPEC.DEPTH,0 ;????? Было 255, у Саймана 256 + BLOCK DIRSPEC.DEPTH-1,0 ;????? Было 255, у Саймана 256 ; ;R11 diff --git a/DSS/FAT_X.ASM b/DSS/FAT_X.ASM index d9aff19..ebaa12b 100644 --- a/DSS/FAT_X.ASM +++ b/DSS/FAT_X.ASM @@ -53,7 +53,6 @@ INC_FA2 CALL R_F_FAT ; HL - CLUSTER ; DE - (CLUSTER) - R_F_FAT EX DE,HL LD HL,(MAX_CLU) AND A @@ -229,7 +228,8 @@ W_T_FAT PUSH DE LD A,(FatBuffer.FAT_TYP) CP "2" JP Z,W_T_F12 -W_T_F16 PUSH DE +W_T_F16: + PUSH DE LD A,H LD B,A AND #0F @@ -327,19 +327,17 @@ RE_FAT PUSH HL ADD HL,HL ADD HL,HL ADD HL,HL - ADD HL,HL ;FAT BLOCK * 16 = SECTOR OF FAT + ADD HL,HL ;FAT BLOCK * 16 = SECTOR OF FAT LD DE,(FatBuffer.FAT_FRM) ADD HL,DE EX DE,HL LD IX,0 ADD IX,DE - LD HL,0 ;HL:IX - SECTOR FAT FOR READING - LD DE,FAT ; DE - FAT ADDRESS + LD HL,0 ;HL:IX - SECTOR FAT FOR READING + LD DE,FAT ; DE - FAT ADDRESS LD A,(FatBuffer.DRIVE) - ; LD B,16 - ; LD C,5 - LD BC,16*256 + 5 ;рег B: 16 * 512 = 8192 (CASH SIZE) - RST #18 + LD BC,16*256 + Dss.DRV.Read ;рег B: 16 * 512 = 8192 (CASH SIZE) + RST ToDSS.DRV POP HL RET @@ -388,10 +386,10 @@ WALLFAT LD H,B LD HL,0 ;HL:IX - SECTOR OF FAT FOR SAVE LD DE,FAT LD B,A - LD C,6 + LD C,Dss.DRV.Write LD A,(FatBuffer.DRIVE) PUSH BC - RST #18 + RST ToDSS.DRV POP BC POP HL LD DE,(FatBuffer.FAT2_XX) @@ -402,8 +400,8 @@ WALLFAT LD H,B LD DE,FAT LD HL,0 LD A,(FatBuffer.DRIVE) - LD C,6 - RST #18 + LD C,Dss.DRV.Write + RST ToDSS.DRV RET ;R01 diff --git a/DSS/Structures.inc b/DSS/Structures.inc index 06e9c0f..b518975 100644 --- a/DSS/Structures.inc +++ b/DSS/Structures.inc @@ -21,7 +21,7 @@ RESERVED2 BLOCK 490,0 ; ;File Manipulator (FM) - STRUCT _sFM ; 44 bytes + STRUCT _sFM ; 44 bytes .NAME: TEXT 8,{". "," "} ;+00 NAME .EXT: TEXT 3,{" "," "} ;+08 EXT .ATTRIBUT: BYTE #10 ;+11 ATTRIBUT diff --git a/Shared_Includes b/Shared_Includes index 6e9cb7f..ced877c 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 6e9cb7fd969b98df5cc98ec109bab2be59d46208 +Subproject commit ced877c153d64941d9ab3a1808d21bc559113e4b