diff --git a/DSS/DOS-MAIN.ASM b/DSS/DOS-MAIN.ASM index 7cdcd92..114d3d0 100644 --- a/DSS/DOS-MAIN.ASM +++ b/DSS/DOS-MAIN.ASM @@ -347,7 +347,7 @@ ADRST10: ;DS 512 ;,0 ;...............................................[LOW ADDRESS ]: ; 0 1 2 3 4 5 6 7 8 9 DEC HEX DB low F_START, low CHNDISK, low CURRDSK, low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09 - DB low CREATE, low CREAT_N, low NOPS, low NOPS, low DELETE, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 A0..13 + DB low CREATE, low CREAT_N, low NOPS, low NOPS, low DELETE, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13 DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR, low RMDIR, low CHDIR ; 2 14..1D DB low CURRDIR, low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27 DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31 @@ -512,8 +512,12 @@ DEPLOY: POP AF OUT (SLOT3),A - LD A,DRVPAGE - CALL BANK + ;!TEST + ;LD A,DRVPAGE + ;CALL BANK + SET_PAGE_X DRVPAGE + ; + PUSH AF LD HL,DRV_CONTENT LD DE,#C000 diff --git a/DSS/DOS5.ASM b/DSS/DOS5.ASM index 9efa26f..413d927 100644 --- a/DSS/DOS5.ASM +++ b/DSS/DOS5.ASM @@ -22,8 +22,6 @@ - - ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; A - ATTRIB ; B - MODE @@ -59,7 +57,7 @@ WATTRIB PUSH AF POP BC RET C SET 7,(IY+_sFM.ACCESS_MODE) - RES 3,B ;CLEAR LABEL ATTR ;R03 + RES 3,B ;CLEAR LABEL ATTR ;R03 ;!HARDCODE attribute bit LD (IY+_sFM.ATTRIBUT),B PUSH BC CALL CLOSE @@ -153,8 +151,13 @@ DELETE LD DE,MASKARE CALL LOADDIR CALL SEARCH RET C -DELFILE LD A,DIRPAGE - CALL BANK +DELFILE: + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; + ;PUSH AF LD (IX+_sFM.NAME),#E5 LD E,(IX+_sFM.ST_CLUSTER) @@ -216,8 +219,13 @@ RENAME PUSH DE LD A,DSS_Error.sys.FILE_EXISTS CCF RET C - LD A,DIRPAGE - CALL BANK + + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; + LD HL,MASKARE LD D,XH LD E,XL @@ -320,23 +328,29 @@ CLOSE: ;R08 LD C,(IY+_sFM.HANDLE) LD B,(IY+_sFM.HANDLE+1) JR CLOSE2 -CLOSE1 ADD HL,DE +CLOSE1: ADD HL,DE DEC BC -CLOSE2 LD A,B +CLOSE2: LD A,B OR C JR NZ,CLOSE1 LD D,YH LD E,YL EX DE,HL PUSH HL - LD A,DIRPAGE - CALL BANK + + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; + POP HL LD BC,#0020 LDIR OUT (SLOT3),A CALL SAVEDIR -NOTMODF LD A,(ACCESS) +NOTMODF: + LD A,(ACCESS) CALL RES_FM RET @@ -347,15 +361,20 @@ ACCESS: DB #00 HANDBUF: BLOCK HANDBUF.SIZE,0 +WRT_HND: + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; -WRT_HND LD A,DIRPAGE - CALL BANK PUSH AF LD IX,DIR EXX LD DE,0 EXX -WRT_HN1 LD A,(IX+00) +WRT_HN1: + LD A,(IX+00) OR A JR Z,WRT_HN2 CP #E5 @@ -369,7 +388,8 @@ WRT_HN1 LD A,(IX+00) SCF RET -WRT_HN2 LD D,XH +WRT_HN2: + LD D,XH LD E,XL LD HL,HANDBUF LD BC,HANDBUF.SIZE @@ -390,7 +410,8 @@ WRT_HN2 LD D,XH AND A RET -DOSNAME INC B +DOSNAME: + INC B DEC B JP Z,GETNAME DEC B @@ -401,25 +422,26 @@ DOSNAME INC B ; HL - 11 bytes filename "FILENAMEEXT" ; DE - DOS filename "FILENAME.EXT",0 -GETNAME LD BC,#08FF -GETN1 LD A,(HL) +GETNAME: + LD BC,#08FF +GETN1: LD A,(HL) CP " " JR NZ,GETN3 -GETN2 INC HL +GETN2: INC HL DJNZ GETN2 JR GETN4 -GETN3 LDI +GETN3: LDI DJNZ GETN1 -GETN4 LD A,(HL) +GETN4: LD A,(HL) CP " " LD A,"." JR NZ,GETN5 LD A,#00 -GETN5 LD (DE),A +GETN5: LD (DE),A INC DE RET Z LD B,#03 -GETN6 LD A,(HL) +GETN6: LD A,(HL) CP " " RET Z LDI @@ -428,12 +450,13 @@ GETN6 LD A,(HL) DJNZ GETN6 RET -DTABUF DW #0000 -CURHND DW #0000 -NO_NEXT DB #00 -FNDMODE DB #00 +DTABUF: DW #0000 +CURHND: DW #0000 +NO_NEXT: DB #00 +FNDMODE: DB #00 -F_FIRST LD (ACCESS),A +F_FIRST: + LD (ACCESS),A LD (DTABUF),DE LD A,B LD (FNDMODE),A @@ -456,7 +479,7 @@ F_FIRST LD (ACCESS),A LD A,(ACCESS) LD (DE),A INC DE -FIND_S LD BC,#0020 +FIND_S: LD BC,#0020 ADD IX,BC LD (CURHND),IX LD HL,HANDBUF+12 @@ -475,13 +498,14 @@ FIND_S LD BC,#0020 LD (NO_NEXT),A XOR A RET -FIND_M2 CALL GETNAME +FIND_M2: + CALL GETNAME LD A,#FF LD (NO_NEXT),A XOR A RET -F_NEXT LD A,(NO_NEXT) +F_NEXT: LD A,(NO_NEXT) OR A LD A,DSS_Error.sys.INVALID_ACCESS SCF @@ -503,9 +527,13 @@ F_NEXT LD A,(NO_NEXT) INC DE JP FIND_S -NSEARCH EX AF,AF' - LD A,DIRPAGE - CALL BANK +NSEARCH: + EX AF,AF' + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; PUSH AF EX AF,AF' CPL @@ -516,16 +544,21 @@ NSEARCH EX AF,AF' EXX JP SEARCH1 -DSEARCH LD A,#10 +DSEARCH: + LD A,#10 CALL ASEARCH RET NC LD A,4 RET -SEARCH LD A,#23 ;%00100011 -ASEARCH EX AF,AF' ; 76ADLSHR - LD A,DIRPAGE - CALL BANK +SEARCH: LD A,#23 ;%00100011 ;!!!!! у Саймана #27 - %0010'0111 +ASEARCH: + EX AF,AF' ; 76ADLSHR + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; PUSH AF EX AF,AF' CPL @@ -534,7 +567,8 @@ ASEARCH EX AF,AF' ; 76ADLSHR EXX LD DE,0 EXX -SEARCH1 LD A,(IX+00) +SEARCH1: + LD A,(IX+00) OR A JR Z,SEARCH4 CP #E5 @@ -547,12 +581,14 @@ SEARCH1 LD A,(IX+00) LD E,XL LD B,11 EX DE,HL -SEARCH2 LD A,(DE) +SEARCH2: + LD A,(DE) CP '?' JR Z,SEARCH5 CP (HL) JR NZ,SEARCH3 -SEARCH5 INC HL +SEARCH5: + INC HL INC DE DJNZ SEARCH2 LD D,XH @@ -566,13 +602,15 @@ SEARCH5 INC HL AND A RET -SEARCH3 EXX +SEARCH3: + EXX INC DE EXX LD DE,#0020 ADD IX,DE JR NC,SEARCH1 -SEARCH4 POP AF +SEARCH4: + POP AF OUT (SLOT3),A LD A,DSS_Error.sys.FILE_NOT_FOUND SCF @@ -730,8 +768,12 @@ SUBDIR3 CALL FINDDIR ; FIND "MASKAREA" IN DIRECTORY -FINDDIR LD A,DIRPAGE - CALL BANK +FINDDIR: + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; PUSH AF LD IX,DIR .F_01: LD A,(IX+00) @@ -875,8 +917,11 @@ LOADDIR: LD IX,0 LD B,A CALL MOVE_FP - LD A,DIRPAGE - CALL BANK + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; PUSH AF ;!TEST no ldir ;LD HL,#C000 @@ -924,8 +969,11 @@ SAVEDIR XOR A LD IX,0 LD B,0 CALL MOVE_FP - LD A,DIRPAGE - CALL BANK + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; PUSH AF LD A,(FatBuffer.DRIVE) LD (IY+_sFM.DRIVE),A @@ -960,21 +1008,23 @@ RTD1S LD A,(FatBuffer.DRIVE) AND A RET -DIRSIZE DW 0 +DIRSIZE: WORD 0 -;!FIXIT Переделать просто на структуру, чтоб получать номера страниц без этого гемора -BANK: LD C,A - LD B,0 - LD HL,BANKTBL - ADD HL,BC - IN A,(SLOT3) - LD C,SLOT3 - OUTI - RET +;!TEST + ;BANK: + ; LD C,A + ; LD B,0 + ; LD HL,BANKTBL + ; ADD HL,BC + ; IN A,(SLOT3) + ; LD C,SLOT3 + ; OUTI + ; RET +; -BANKTBL: - BLOCK USING_MEMPAGES+1,#FF +BANKTBL: BLOCK USING_MEMPAGES+1,#FF +;!TODO ;G_HAND1 POP IX ; POP HL ; POP DE @@ -1082,22 +1132,18 @@ BANKTBL: ;HANDTA DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -MASKARE - DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - +MASKARE: BLOCK 32,0 ;!HARDCODE почему 32? ; HL - MASK "file*.t??" ; DE - 11 bytes filename ; RET: C=2 FILE WITHOUT EXTENTION ; C=1 FILE WITH EXTENTION - MASK PUSH HL PUSH DE LD H,D LD L,E INC DE - LD (HL),#20 - LD BC,10 + LD (HL),' ' + LD BC,10 ;!HARDCODE = size (FileName + Extension - 1) LDIR POP DE POP HL @@ -1610,8 +1656,11 @@ MKD03 INC HL DJNZ MKD03 INC HL PUSH HL - LD A,DIRPAGE - CALL BANK + ;!TEST + ;LD A,DIRPAGE + ;CALL BANK + SET_PAGE_X DIRPAGE + ; POP HL PUSH AF LD A,(DIR) diff --git a/DSS/DOS_X.ASM b/DSS/DOS_X.ASM index 8e9c062..22d32ff 100644 --- a/DSS/DOS_X.ASM +++ b/DSS/DOS_X.ASM @@ -381,8 +381,11 @@ S4C02 INC HL ; JP C,RDERR1 LD HL,0 LD (FATCASH),HL - LD A,FATPAGE - CALL BANK + ;!TEST + ;LD A,FATPAGE + ;CALL BANK + SET_PAGE_X FATPAGE + ; PUSH AF XOR A CALL RE_FAT @@ -457,8 +460,11 @@ SAVE_CUR_PATH PUSH BC PUSH AF ; - LD A,ENVPAGE - CALL BANK + ;!TEST + ;LD A,ENVPAGE + ;CALL BANK + SET_PAGE_X ENVPAGE + ; PUSH AF CALL CURRDSK @@ -496,8 +502,12 @@ BACK_CUR_PATH: PUSH BC PUSH AF ; - LD A,ENVPAGE - CALL BANK + ;!TEST + ;LD A,ENVPAGE + ;CALL BANK + SET_PAGE_X ENVPAGE + ; + PUSH AF LD HL,TMP_CURDIR diff --git a/DSS/DSS_MACROSES.Z80 b/DSS/DSS_MACROSES.Z80 index 7c984bd..c8eafb6 100644 --- a/DSS/DSS_MACROSES.Z80 +++ b/DSS/DSS_MACROSES.Z80 @@ -1,3 +1,14 @@ + +; + MACRO SET_PAGE_X new_page + LD A,(BANKTBL+new_page) + LD B,A + LD C,SLOT3 + IN A,(SLOT3) + OUT (C),B + ENDM +; + ; MACRO _mSavePath IF SAVE_PATH_MACRO diff --git a/DSS/ENVIRON.ASM b/DSS/ENVIRON.ASM index 089f283..9781daa 100644 --- a/DSS/ENVIRON.ASM +++ b/DSS/ENVIRON.ASM @@ -28,8 +28,12 @@ ENVIRON: RET INITENV: - LD A,ENVPAGE - CALL BANK + ;!TEST + ;LD A,ENVPAGE + ;CALL BANK + SET_PAGE_X ENVPAGE + ; + PUSH AF ;!TEST LD A,(BOOTDRV) @@ -56,8 +60,11 @@ INITENV: READENV: PUSH HL - LD A,ENVPAGE - CALL BANK + ;!TEST + ;LD A,ENVPAGE + ;CALL BANK + SET_PAGE_X ENVPAGE + ; LD H,A LD C,SLOT3 IN L,(C) @@ -88,8 +95,11 @@ READENV: GETENV: PUSH DE CALL ENV_EX - LD A,ENVPAGE - CALL BANK + ;!TEST + ;LD A,ENVPAGE + ;CALL BANK + SET_PAGE_X ENVPAGE + ; EX AF,AF' CALL F_ENV @@ -111,9 +121,11 @@ GE_1: EX AF,AF' RET SETENV: CALL ENV_EX -; - LD A,ENVPAGE - CALL BANK + ;!TEST + ;LD A,ENVPAGE + ;CALL BANK + SET_PAGE_X ENVPAGE + ; PUSH AF ; CALL F_ENV diff --git a/DSS/EXECUTE.ASM b/DSS/EXECUTE.ASM index 84e33c4..81b83b2 100644 --- a/DSS/EXECUTE.ASM +++ b/DSS/EXECUTE.ASM @@ -560,8 +560,11 @@ RELATIVE_DIR EQU 0 ABSOLUTE_DIR EQU 1 FINDPATH - LD A,ENVPAGE - CALL BANK + ;!TEST + ;LD A,ENVPAGE + ;CALL BANK + SET_PAGE_X ENVPAGE + ; PUSH AF CALL CURRDSK @@ -871,7 +874,7 @@ NOINK LD A,H SUB B LD (SECBUF),A LD SP,EXEBUFF+510 ;R02 - LD A,#FF + LD A,DSS_PAGE OUT (SLOT1),A OUT (SLOT2),A OUT (SLOT3),A @@ -1023,7 +1026,7 @@ NOINK2 CALL GETMEM SUB B LD (SECBUF),A LD SP,EXEBUFF+510 - LD A,#FF + LD A,DSS_PAGE OUT (SLOT1),A OUT (SLOT2),A OUT (SLOT3),A diff --git a/DSS/FAT_X.ASM b/DSS/FAT_X.ASM index ebaa12b..c8cce78 100644 --- a/DSS/FAT_X.ASM +++ b/DSS/FAT_X.ASM @@ -61,8 +61,13 @@ R_F_FAT EX DE,HL LD A,10 RET C EXX - LD A,FATPAGE - CALL BANK + + ;!TEST + ;LD A,FATPAGE + ;CALL BANK + SET_PAGE_X FATPAGE + ; + EXX PUSH HL PUSH AF @@ -218,8 +223,11 @@ W_T_FAT PUSH DE LD A,10 RET C EXX - LD A,FATPAGE - CALL BANK + ;!TEST + ;LD A,FATPAGE + ;CALL BANK + SET_PAGE_X FATPAGE + ; EXX PUSH HL PUSH AF @@ -342,8 +350,11 @@ RE_FAT PUSH HL RET WR_FAT EXX - LD A,FATPAGE - CALL BANK + ;!TEST + ;LD A,FATPAGE + ;CALL BANK + SET_PAGE_X FATPAGE + ; EXX PUSH AF CALL WR_FAT_ diff --git a/DSS/IDE_DRV0.ASM b/DSS/IDE_DRV0.ASM index f098010..928e142 100644 --- a/DSS/IDE_DRV0.ASM +++ b/DSS/IDE_DRV0.ASM @@ -613,7 +613,7 @@ NXTPART LD DE,#10 PARTIT IN A,(SLOT3) PUSH AF - LD A,#FF + LD A,DSS_PAGE OUT (SLOT3),A CALL PARTIT1 POP AF @@ -701,7 +701,7 @@ LOADSEC PUSH IY LD IX,(CURSECL) LD HL,(CURSECH) LD DE,PART - LD BC,#0155 + LD BC,1*256 + BIOS.DRV_READ LD A,(DRV) RST ToBIOS POP IY diff --git a/DSS/INTMOUSE.ASM b/DSS/INTMOUSE.ASM index c2d0432..78c1c0d 100644 --- a/DSS/INTMOUSE.ASM +++ b/DSS/INTMOUSE.ASM @@ -846,21 +846,23 @@ CONTROL CALL READ_M RET NC CALL MCORECT LD A,#00 - LD (REDY+1),A + LD (REDY),A RET REFRESH LD A,#01 OR A RET NZ -REDY LD A,#00 -; OR A -; RET NZ +REDY+1: LD A,#00 + ;????? почему закомментированно в оригинале? + ;OR A + ;RET NZ + ; CALL RESTORE LD HL,(PIX_X) LD DE,(PIX_Y) CALL MOUSE LD A,#FF - LD (REDY+1),A + LD (REDY),A RET MODE_M DB #03 @@ -892,26 +894,25 @@ SKIPXF DW 0 REALXS DW 0 REALYS DW 0 -Xx EQU #00 -Ww EQU #FE -Nn EQU #FF - +; Xx EQU #00 +; Ww EQU #FE +; Nn EQU #FF ;MS_BMP M_IMAGE: - DB Xx,Xx,Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn - DB Xx,Ww,Xx,Nn,Nn,Nn,Nn,Nn,Nn,Nn - DB Xx,Ww,Ww,Xx,Nn,Nn,Nn,Nn,Nn,Nn - DB Xx,Ww,Ww,Ww,Xx,Nn,Nn,Nn,Nn,Nn - DB Xx,Ww,Ww,Ww,Ww,Xx,Nn,Nn,Nn,Nn - DB Xx,Ww,Ww,Ww,Ww,Ww,Xx,Nn,Nn,Nn - DB Xx,Ww,Ww,Ww,Ww,Ww,Ww,Xx,Nn,Nn - DB Xx,Ww,Ww,Ww,Ww,Xx,Xx,Xx,Xx,Nn - DB Xx,Ww,Ww,Xx,Ww,Xx,Nn,Nn,Nn,Nn - DB Xx,Ww,Xx,Xx,Ww,Ww,Xx,Nn,Nn,Nn - DB Xx,Xx,Nn,Nn,Xx,Ww,Xx,Nn,Nn,Nn - DB Xx,Nn,Nn,Nn,Xx,Ww,Ww,Xx,Nn,Nn - DB Nn,Nn,Nn,Nn,Nn,Xx,Xx,Nn,Nn,Nn - DB Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn + DH "00 00 FF FF FF FF FF FF FF FF" + DH "00 FE 00 FF FF FF FF FF FF FF" + DH "00 FE FE 00 FF FF FF FF FF FF" + DH "00 FE FE FE 00 FF FF FF FF FF" + DH "00 FE FE FE FE 00 FF FF FF FF" + DH "00 FE FE FE FE FE 00 FF FF FF" + DH "00 FE FE FE FE FE FE 00 FF FF" + DH "00 FE FE FE FE 00 00 00 00 FF" + DH "00 FE FE 00 FE 00 FF FF FF FF" + DH "00 FE 00 00 FE FE 00 FF FF FF" + DH "00 00 FF FF 00 FE 00 FF FF FF" + DH "00 FF FF FF 00 FE FE 00 FF FF" + DH "FF FF FF FF FF 00 00 FF FF FF" + DH "FF FF FF FF FF FF FF FF FF FF" BLOCK 256-($-M_IMAGE),0 .Size EQU $-M_IMAGE