diff --git a/DSS/DOS-MAIN.ASM b/DSS/DOS-MAIN.ASM index 114d3d0..b672b3e 100644 --- a/DSS/DOS-MAIN.ASM +++ b/DSS/DOS-MAIN.ASM @@ -512,11 +512,7 @@ DEPLOY: POP AF OUT (SLOT3),A - ;!TEST - ;LD A,DRVPAGE - ;CALL BANK - SET_PAGE_X DRVPAGE - ; + SET_PAGE_X DRVPAGE PUSH AF LD HL,DRV_CONTENT diff --git a/DSS/DOS5.ASM b/DSS/DOS5.ASM index 413d927..03f3377 100644 --- a/DSS/DOS5.ASM +++ b/DSS/DOS5.ASM @@ -69,10 +69,9 @@ WATTRIB PUSH AF ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; OUTPUT: A - FM - CREATE: _mSavePath - AND #E7 ;R04 + AND #E7 ;R04 %76A00SHR = !FAT_ATTR LD (ACCESS),A LD (PATH0),HL CALL GETWORD @@ -90,7 +89,7 @@ CREATE: ; OUTPUT: A - FM CREAT_N: _mSavePath - AND #E7 ;R04 %76A00SHR + AND #E7 ;R04 %76A00SHR = !FAT_ATTR LD (ACCESS),A LD (PATH0),HL CALL GETWORD @@ -152,17 +151,12 @@ DELETE LD DE,MASKARE CALL SEARCH RET C DELFILE: - ;!TEST - ;LD A,DIRPAGE - ;CALL BANK - SET_PAGE_X DIRPAGE - ; + SET_PAGE_X DIRPAGE - ;PUSH AF LD (IX+_sFM.NAME),#E5 LD E,(IX+_sFM.ST_CLUSTER) LD D,(IX+_sFM.ST_CLUSTER+1) - ;POP AF + OUT (SLOT3),A LD A,E OR D @@ -183,7 +177,6 @@ SMALDEL CALL SAVEDIR ; INPUT: HL - "old_name.ext",#00 without simbols * ? ; DE - "new_name.ext",#00 without simbols * ? - RENAME PUSH DE LD DE,MASKARE CALL MASK @@ -198,7 +191,8 @@ RENAME PUSH DE RET Z PUSH DE CALL LOADDIR - LD A,#33 + ;LD A,#33 + LD A,FAT_ATTR.NoSYSnoVolID CALL ASEARCH POP HL RET C @@ -213,18 +207,14 @@ RENAME PUSH DE SCF RET Z PUSH IX - LD A,#33 + LD A,FAT_ATTR.NoSYSnoVolID CALL ASEARCH POP IX LD A,DSS_Error.sys.FILE_EXISTS CCF RET C - ;!TEST - ;LD A,DIRPAGE - ;CALL BANK - SET_PAGE_X DIRPAGE - ; + SET_PAGE_X DIRPAGE LD HL,MASKARE LD D,XH @@ -245,7 +235,7 @@ OPENATR: LD DE,MASKARE CALL MASK RET C - LD A,#37 ;%00AD0SHR + LD A,FAT_ATTR.NoVolID CALL ASEARCH JR NC,OPENAT RET @@ -338,11 +328,7 @@ CLOSE2: LD A,B EX DE,HL PUSH HL - ;!TEST - ;LD A,DIRPAGE - ;CALL BANK - SET_PAGE_X DIRPAGE - ; + SET_PAGE_X DIRPAGE POP HL LD BC,#0020 @@ -362,11 +348,7 @@ HANDBUF: BLOCK HANDBUF.SIZE,0 WRT_HND: - ;!TEST - ;LD A,DIRPAGE - ;CALL BANK - SET_PAGE_X DIRPAGE - ; + SET_PAGE_X DIRPAGE PUSH AF LD IX,DIR @@ -453,6 +435,8 @@ GETN6: LD A,(HL) DTABUF: DW #0000 CURHND: DW #0000 NO_NEXT: DB #00 +.YES EQU 0 +.NO EQU #FF FNDMODE: DB #00 F_FIRST: @@ -474,12 +458,12 @@ F_FIRST: RET C LD HL,MASKARE LD DE,(DTABUF) - LD BC,11 + LD BC,11 ;!HARDCODE LDIR LD A,(ACCESS) LD (DE),A - INC DE -FIND_S: LD BC,#0020 +FIND_S: INC DE + LD BC,#0020 ADD IX,BC LD (CURHND),IX LD HL,HANDBUF+12 @@ -492,15 +476,15 @@ FIND_S: LD BC,#0020 LD A,(FNDMODE) OR A JR NZ,FIND_M2 - LD BC,11 + LD BC,11 ;!HARDCODE LDIR - LD A,#FF + LD A,NO_NEXT.NO LD (NO_NEXT),A XOR A RET FIND_M2: CALL GETNAME - LD A,#FF + LD A,NO_NEXT.NO LD (NO_NEXT),A XOR A RET @@ -511,54 +495,53 @@ F_NEXT: LD A,(NO_NEXT) SCF RET Z LD (DTABUF),DE + EX DE,HL LD DE,MASKARE - LD HL,(DTABUF) - LD BC,11 + LD BC,11 ;!HARDCODE LDIR + + XOR A + LD (NO_NEXT),A + LD A,(HL) PUSH HL CALL NSEARCH POP DE - EX AF,AF' - XOR A - LD (NO_NEXT),A - EX AF,AF' RET C - INC DE JP FIND_S NSEARCH: EX AF,AF' - ;!TEST - ;LD A,DIRPAGE - ;CALL BANK - SET_PAGE_X DIRPAGE - ; + + SET_PAGE_X DIRPAGE PUSH AF + EX AF,AF' CPL LD C,A - LD IX,(CURHND) + EXX LD DE,0 EXX + LD IX,(CURHND) + LD A,XH + OR XL + JR Z,SEARCH3.error JP SEARCH1 DSEARCH: - LD A,#10 + LD A,FAT_ATTR.DIRECTORY CALL ASEARCH RET NC - LD A,4 + LD A,DSS_Error.sys.PATH_NOT_FOUND RET -SEARCH: LD A,#23 ;%00100011 ;!!!!! у Саймана #27 - %0010'0111 +SEARCH: LD A,FAT_ATTR.NoDIRnoVolID ASEARCH: EX AF,AF' ; 76ADLSHR - ;!TEST - ;LD A,DIRPAGE - ;CALL BANK - SET_PAGE_X DIRPAGE - ; + + SET_PAGE_X DIRPAGE + PUSH AF EX AF,AF' CPL @@ -571,7 +554,7 @@ SEARCH1: LD A,(IX+00) OR A JR Z,SEARCH4 - CP #E5 + CP #E5 ;!HARDCODE #E5 - запись в директории свободна, так как файл/директория были удалены JR Z,SEARCH3 LD A,(IX+11) AND C @@ -606,9 +589,14 @@ SEARCH3: EXX INC DE EXX - LD DE,#0020 + LD DE,#0020 ;!HARDCODE ADD IX,DE JR NC,SEARCH1 +.error: POP AF + OUT (SLOT3),A + LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR + SCF + RET SEARCH4: POP AF OUT (SLOT3),A @@ -636,7 +624,7 @@ GETWORD: RET .DIR_NAME: - LD A,#00 + XOR A LD (DE),A PUSH HL LD HL,TMPNAME @@ -665,8 +653,6 @@ TMPNAME: DB ' ',#00 ; 12 ;!TODO сделать для каждого драйва запоминание текущей дирректории, пока тут заглушка ; RestoreDIR: - -; CHNDISK: CALL OPENDSK ;????? R10 @@ -693,6 +679,13 @@ CHNDISK: ; ;????? R10 OPENDSK: + ;!TEST + LD C,A + LD A,(FatBuffer.DRIVE) + CP C + JR Z,.exit + LD A,C + ; PUSH AF LD C,Dss.DRV.Open RST ToDSS.DRV @@ -702,7 +695,7 @@ OPENDSK: LD (FatBuffer.DRIVE),A CALL RD_BPB RET C - LD A,(LDRIVE) +.exit: LD A,(LDRIVE) AND A RET .error: CP DSS_Error.sys.INVALID_DRIVE @@ -712,12 +705,14 @@ OPENDSK: RET ; -OPENDIR XOR A +OPENDIR: + XOR A CALL SET_FM LD A,(HL) OR A JP NZ,SUBDIR -REROOT1 LD DE,0 +REROOT1: + LD DE,0 LD (IY+_sFM.ST_CLUSTER),E LD (IY+_sFM.ST_CLUSTER+1),D CALL LOADDIR @@ -728,34 +723,37 @@ REROOT1 LD DE,0 AND A RET -SUBDIR CP "." +SUBDIR: CP "." JR NZ,SUBDIR2 - LD A,(IY+_sFM.ST_CLUSTER) ;R05 - OR (IY+_sFM.ST_CLUSTER+1) ;R05 + LD A,(IY+_sFM.ST_CLUSTER) ;R05 ;!FIXIT можно переделать на прямые ссылки без IY + OR (IY+_sFM.ST_CLUSTER+1) ;R05 ;!FIXIT можно переделать на прямые ссылки без IY JR NZ,SUDI1 ;R05 INC HL ;R05 LD A,(HL) ;R05 OR A ;R05 DEC HL ;R05 JR Z,REROOT1 ;R05 -SUDI1 EXX +SUDI1: EXX LD HL,MASKARE LD DE,MASKARE+1 - LD BC,10 - LD (HL),#20 + LD BC,10 ;!HARDCODE + LD (HL),' ' LDIR EXX LD DE,MASKARE -SUBDIR0 LDI +SUBDIR0: + LDI LD A,(HL) OR A JR NZ,SUBDIR0 JR SUBDIR3 -SUBDIR2 LD DE,MASKARE +SUBDIR2: + LD DE,MASKARE CALL MASK RET C -SUBDIR3 CALL FINDDIR +SUBDIR3: + CALL FINDDIR RET C LD (IY+_sFM.ST_CLUSTER),E LD (IY+_sFM.ST_CLUSTER+1),D @@ -822,7 +820,7 @@ FINDDIR: EX DE,HL ; JR NZ,ROTZ JR NZ,MM3 - JR MM2_5 + JP MM2_5 ; INC HL ; ROTZ LD (HL),0 ; JP IT_DIR @@ -1588,7 +1586,7 @@ MKDIR: RET C CALL LOADDIR CALL DSEARCH - LD A,15 + LD A,DSS_Error.sys.DIR_EXISTS CCF RET C CALL G_CLUST @@ -1656,11 +1654,9 @@ MKD03 INC HL DJNZ MKD03 INC HL PUSH HL - ;!TEST - ;LD A,DIRPAGE - ;CALL BANK - SET_PAGE_X DIRPAGE - ; + + SET_PAGE_X DIRPAGE + POP HL PUSH AF LD A,(DIR) diff --git a/DSS/DOS_X.ASM b/DSS/DOS_X.ASM index 22d32ff..a81f05e 100644 --- a/DSS/DOS_X.ASM +++ b/DSS/DOS_X.ASM @@ -381,11 +381,9 @@ S4C02 INC HL ; JP C,RDERR1 LD HL,0 LD (FATCASH),HL - ;!TEST - ;LD A,FATPAGE - ;CALL BANK - SET_PAGE_X FATPAGE - ; + + SET_PAGE_X FATPAGE + PUSH AF XOR A CALL RE_FAT @@ -459,12 +457,8 @@ SAVE_CUR_PATH PUSH DE PUSH BC PUSH AF -; - ;!TEST - ;LD A,ENVPAGE - ;CALL BANK - SET_PAGE_X ENVPAGE - ; + + SET_PAGE_X ENVPAGE PUSH AF CALL CURRDSK @@ -501,13 +495,8 @@ BACK_CUR_PATH: PUSH DE PUSH BC PUSH AF -; - ;!TEST - ;LD A,ENVPAGE - ;CALL BANK - SET_PAGE_X ENVPAGE - ; + SET_PAGE_X ENVPAGE PUSH AF LD HL,TMP_CURDIR diff --git a/DSS/DSS_MACROSES.Z80 b/DSS/DSS_MACROSES.Z80 index c8eafb6..b4c759b 100644 --- a/DSS/DSS_MACROSES.Z80 +++ b/DSS/DSS_MACROSES.Z80 @@ -1,11 +1,17 @@ ; MACRO SET_PAGE_X new_page - LD A,(BANKTBL+new_page) - LD B,A - LD C,SLOT3 - IN A,(SLOT3) - OUT (C),B + IF OLD_SET_BANK + LD A,new_page + CALL BANK + + ELSE + LD A,(BANKTBL+new_page) + LD B,A + LD C,SLOT3 + IN A,(SLOT3) + OUT (C),B + ENDIF ENDM ; diff --git a/DSS/ENVIRON.ASM b/DSS/ENVIRON.ASM index 9781daa..297be7e 100644 --- a/DSS/ENVIRON.ASM +++ b/DSS/ENVIRON.ASM @@ -28,12 +28,7 @@ ENVIRON: RET INITENV: - ;!TEST - ;LD A,ENVPAGE - ;CALL BANK - SET_PAGE_X ENVPAGE - ; - + SET_PAGE_X ENVPAGE PUSH AF ;!TEST LD A,(BOOTDRV) @@ -60,11 +55,9 @@ INITENV: READENV: PUSH HL - ;!TEST - ;LD A,ENVPAGE - ;CALL BANK - SET_PAGE_X ENVPAGE - ; + + SET_PAGE_X ENVPAGE + LD H,A LD C,SLOT3 IN L,(C) @@ -95,11 +88,7 @@ READENV: GETENV: PUSH DE CALL ENV_EX - ;!TEST - ;LD A,ENVPAGE - ;CALL BANK - SET_PAGE_X ENVPAGE - ; + SET_PAGE_X ENVPAGE EX AF,AF' CALL F_ENV @@ -121,13 +110,10 @@ GE_1: EX AF,AF' RET SETENV: CALL ENV_EX - ;!TEST - ;LD A,ENVPAGE - ;CALL BANK - SET_PAGE_X ENVPAGE - ; + + SET_PAGE_X ENVPAGE PUSH AF -; + CALL F_ENV JR NC,PENV XOR A diff --git a/DSS/EXECUTE.ASM b/DSS/EXECUTE.ASM index 81b83b2..c48bba8 100644 --- a/DSS/EXECUTE.ASM +++ b/DSS/EXECUTE.ASM @@ -559,12 +559,8 @@ CHECKPATH: ; !TODO сде RELATIVE_DIR EQU 0 ABSOLUTE_DIR EQU 1 -FINDPATH - ;!TEST - ;LD A,ENVPAGE - ;CALL BANK - SET_PAGE_X ENVPAGE - ; +FINDPATH: + SET_PAGE_X ENVPAGE PUSH AF CALL CURRDSK @@ -579,7 +575,7 @@ FINDPATH CALL MAKE_PATH_ARRAY LD HL,PATH_PNT_ARRAY -NEXTPATHI +NEXTPATHI: LD E,(HL) INC HL LD D,(HL) @@ -602,20 +598,20 @@ NEXTPATHI CALL TST_EXT JR C,BADPATH CALL SEARCH -BADPATH +BADPATH: POP BC POP HL JR NC,PATHFOUND DJNZ NEXTPATHI SCF -PATHFOUND +PATHFOUND: POP BC LD A,B OUT (SLOT3),A ; LD A,DSS_Error.sys.PATH_NOT_FOUND ;????? нужен ли тут код ошибки? RET -GOTO_CURDIR +GOTO_CURDIR: PUSH HL LD HL,TMP_CURDIR ; @@ -625,11 +621,11 @@ GOTO_CURDIR POP HL RET -MAKE_PATH_ARRAY +MAKE_PATH_ARRAY: LD HL,PATH_PNT_ARRAY-1 ;R04 -1 LD DE,ENVTEMP-1 LD B,#00 -NEXTAR LD (HL),C ;R04 +NEXTAR: LD (HL),C ;R04 INC HL ;R04 XOR A LD (DE),A @@ -642,12 +638,12 @@ NEXTAR LD (HL),C ;R04 ;R04 LD (HL),C ;R04 INC HL INC B -NEXTRT LD A,(DE) +NEXTRT: LD A,(DE) CP #5C ;\ JR NZ,NEXTCH -NEXTDR SET ABSOLUTE_DIR,C -NEXTRL ;SET RELATIVE_DIR,C -NEXTCH LD A,(DE) +NEXTDR: SET ABSOLUTE_DIR,C +NEXTRL: ;SET RELATIVE_DIR,C ;!TODO ???? +NEXTCH: LD A,(DE) CP ";" JR Z,NEXTAR INC DE @@ -724,9 +720,8 @@ EXEC1: EXEC0_SHORT: ;SHORT NAME ; TRY TO FIND IN CURRENT DIRECTORY -; ; LD (CMDLINE),HL - LD A,#01 + LD A,#01 ; %7600000R = !FAT_ATTR LD (ACCESS),A CALL GETWORD RET C diff --git a/DSS/FAT_X.ASM b/DSS/FAT_X.ASM index c8cce78..6c08d1c 100644 --- a/DSS/FAT_X.ASM +++ b/DSS/FAT_X.ASM @@ -62,12 +62,8 @@ R_F_FAT EX DE,HL RET C EXX - ;!TEST - ;LD A,FATPAGE - ;CALL BANK - SET_PAGE_X FATPAGE - ; - + SET_PAGE_X FATPAGE + EXX PUSH HL PUSH AF @@ -223,11 +219,9 @@ W_T_FAT PUSH DE LD A,10 RET C EXX - ;!TEST - ;LD A,FATPAGE - ;CALL BANK - SET_PAGE_X FATPAGE - ; + + SET_PAGE_X FATPAGE + EXX PUSH HL PUSH AF @@ -349,11 +343,8 @@ RE_FAT PUSH HL POP HL RET -WR_FAT EXX - ;!TEST - ;LD A,FATPAGE - ;CALL BANK - SET_PAGE_X FATPAGE +WR_FAT: EXX + SET_PAGE_X FATPAGE ; EXX PUSH AF @@ -362,7 +353,8 @@ WR_FAT EXX OUT (SLOT3),A RET -WR_FAT_ LD HL,(FATCASH) +WR_FAT_: + LD HL,(FATCASH) LD H,0 LD (FATCASH),HL ADD HL,HL @@ -387,7 +379,8 @@ WR_FAT_ LD HL,(FATCASH) SBC HL,DE JP C,FATERR LD A,L -WALLFAT LD H,B +WALLFAT: + LD H,B LD L,C LD DE,(FatBuffer.FAT_FRM) ADD HL,DE @@ -472,8 +465,8 @@ FATERR: POP HL ; SCF RET -FATCASH DW #0000 -MAX_CLU DW #0FF0 +FATCASH: WORD #0000 +MAX_CLU: WORD #0FF0 ;//MODULE: FAT_X ;[END] diff --git a/DSS/VIDEO.ASM b/DSS/VIDEO.ASM index 5e5b1ac..899419d 100644 --- a/DSS/VIDEO.ASM +++ b/DSS/VIDEO.ASM @@ -191,7 +191,7 @@ WINCOPY: AND A PUSH AF ;R02 XOR A EX AF,AF' ;R03 - LD A,B ;R03 ;!TEST + LD A,B ;R03 EX AF,AF' ;R03 LD C,BIOS.WIN_COPY DI ;R02 @@ -213,7 +213,7 @@ WINREST: AND A PUSH AF ;R02 XOR A EX AF,AF' ;R03 - LD A,B ;R03 ;!TEST + LD A,B ;R03 EX AF,AF' ;R03 DI ;R02 LD C,BIOS.WIN_RESTORE @@ -269,7 +269,7 @@ SCROLL: DJNZ SCR_DW SCR_DW: DJNZ SCR_ERR LD B,A LD C,L - PUSH BC ;R03 ;!TEST + PUSH BC ;R03 PUSH DE PUSH HL LD XH,D @@ -281,7 +281,7 @@ SCR_DW: DJNZ SCR_ERR RST ToBIOS POP HL POP DE - POP BC ;R03 ;!TEST + POP BC ;R03 XOR A CP B JR Z,SCROLL.print @@ -561,7 +561,7 @@ SVTEXT1 LD (SVHL1),HL LD DE,#0000 EX AF,AF' ;R03 LD A,(BANKTBL+TXTPAGE) - LD B,A ;!TEST + LD B,A EX AF,AF' ;R03 LD C,BIOS.WIN_COPY XOR A @@ -591,7 +591,7 @@ SVHL1+1: LD DE,#0000 EX AF,AF' ;R03 LD A,(BANKTBL+TXTPAGE) - LD B,A ;!TEST + LD B,A EX AF,AF' ;R03 LD C,BIOS.WIN_RESTORE XOR A diff --git a/DSS/defines.inc b/DSS/defines.inc index 8a921e7..87f9b98 100644 --- a/DSS/defines.inc +++ b/DSS/defines.inc @@ -15,7 +15,8 @@ ; ;-------------------[MEMORY]-------------------------; DEFINE USING_MEMPAGES 4 - + DEFINE OLD_SET_BANK 0 + ;!FIXIT сделать типа DIRPAGE EQU 0 + BANKTBL и упростить BANK DIRPAGE EQU 0 FATPAGE EQU 1 diff --git a/Shared_Includes b/Shared_Includes index 3fa91af..d3626ca 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 3fa91af2db4f96a96f3342d7291deb4d63a90591 +Subproject commit d3626cafdbc4a718c1bb02da6d4c3dc806875896