; LAST UPDATE: 24.06.2025 savelij ;[]===========================================================[] CursUp LD A,(IY + PANEL.EFL) OR (IY + PANEL.EFH) RET Z LD L,(IY + PANEL.CFL) LD H,(IY + PANEL.CFH) LD A,H OR L JR NZ,CursUp1 LD A,(IY + PANEL.FFL) OR (IY + PANEL.FFH) RET Z JR ScrlDn1 CursUp1 DEC HL PUSH HL CALL ResInvert POP HL LD (IY + PANEL.CFL),L LD (IY + PANEL.CFH),H CALL SetInvert JP PrnFileInfo ScrollDown: LD A,(IY + PANEL.EFL) OR (IY + PANEL.EFH) RET Z LD A,(IY + PANEL.FFL) OR (IY + PANEL.FFH) RET Z ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) JP NZ,ScrlDnP BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JP NZ,ScrlDnT GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 LD L,(IY + PANEL.EFL) LD H,(IY + PANEL.EFH) ADD HL,HL ; *2 ADD HL,HL ; *4 ADD HL,HL ; *8 LD E,L LD D,H ADD HL,HL ; *10 ADD HL,DE ; *18 SET 6,H ; | 0x4000 - адрес начала страницы PUSH HL POP IX LD L,(IY + PANEL.FFL) LD H,(IY + PANEL.FFH) DEC HL ADD HL,HL ; *2 ADD HL,HL ; *4 ADD HL,HL ; *8 LD E,L LD D,H ADD HL,HL ; *10 ADD HL,DE ; *18 SET 6,H ; | 0x4000 - адрес начала страницы LD DE,WorkBuffer LD BC,FileHDR.Attr PUSH HL LDIR POP HL LD DE,0x18*0x11 ADD HL,DE LD E,IXL LD D,IXH OR A SBC HL,DE ADD HL,DE JR C,.L2 EX DE,HL .L2 LD DE,WorkBuffer+0x10 LD C,0x0E PUSH HL LDIR POP HL LD DE,0x18*0x11 ADD HL,DE LD E,IXL LD D,IXH OR A SBC HL,DE ADD HL,DE JR C,.L3 EX DE,HL .L3 LD DE,WorkBuffer+0x20 LD C,0x0E LDIR POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor CALL ResInvert PUSH IY GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD L,(IY + PANEL.XL) LD H,(IY + PANEL.XH) LD DE,6 ADD HL,DE LD DE,63 << 8 | 71 LD BC,128 << 8 | 46 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x01 LD BC,12 << 8 | 63 LD A,(HL) DEC HL OR A PUSH DE CALL NZ,PrintName POP HL LD DE,104 ADD HL,DE LD DE,63 << 8 | 71 LD BC,128 << 8 | 46 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x11 LD BC,12 << 8 | 63 LD A,(HL) DEC HL OR A PUSH DE CALL NZ,PrintName POP HL LD DE,0x0068 ADD HL,DE LD DE,63 << 8 | 71 LD BC,128 << 8 | 46 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x21 LD BC,12 << 8 | 63 LD A,(HL) DEC HL OR A CALL NZ,PrintName POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY LD L,(IY + PANEL.FFL) LD H,(IY + PANEL.FFH) DEC HL LD (IY + PANEL.FFL),L LD (IY + PANEL.FFH),H CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE JP PrnHScrBar ScrlDnP GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 LD L,(IY + PANEL.FFL) LD H,(IY + PANEL.FFH) DEC HL ADD HL,HL ; *2 ADD HL,HL ; *4 ADD HL,HL ; *8 LD E,L LD D,H ADD HL,HL ; *10 ADD HL,DE ; *18 SET 6,H ; | 0x4000 LD DE,WorkBuffer LD BC,FileHDR.SIZE LDIR POP AF SETPORT WINSP.CPU1,,0 LD IX,WorkBuffer LD HL,WorkBuffer LD DE,WorkBuffer+0x200 LD BC,0x000D LDIR LD A,0x01 LD (DE),A INC DE BIT DIR.B_Dir,(IX + FileHDR.Attr) CALL NZ,PutDIRTxt CALL Z,GetFileLen LD A,0x01 LD (DE),A INC DE CALL GetData LD A,0x01 LD (DE),A INC DE CALL GetTime LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor CALL ResInvert PUSH IY GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD L,(IY+PANEL.XL) LD H,(IY+PANEL.XH) LD DE,4 ADD HL,DE LD DE,63 << 8 | 71 LD BC,136 << 8 + 144 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x200 LD BC,38 << 8 + 63 CALL PrintName POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) DEC HL LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE JP PrnVScrBar ScrlDnT GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer LD B,0x18 LD A,0x80 PUSH HL .L2 LD (HL),A INC L DJNZ .L2 POP DE LD HL,0x4000 LD C,(IY+PANEL.FFL) LD B,(IY+PANEL.FFH) DEC BC LD A,B OR C JR Z,ScrDdn2 ScrDdn1 PUSH BC LD A,(HL) AND 0x7F LD E,A LD A,(HL) LD (DE),A LD BC,0x0010 ADD HL,BC POP BC DEC BC LD A,B OR C JR NZ,ScrDdn1 ScrDdn2 LD DE,WorkBuffer+0x100 LD BC,0x0010 LDIR POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer+0x100 LD DE,WorkBuffer+0x200 CALL MakeTreeLine LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor CALL ResInvert PUSH IY GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD L,(IY+PANEL.XL) LD H,(IY+PANEL.XH) LD DE,6 ADD HL,DE LD DE,63 << 8 | 71 LD BC,136 << 8 | 144 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x200 LD BC,36 << 8 | 63 CALL PrintName POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) DEC HL LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE JP PrnVScrBar ;[]===========================================================[] CursDown LD C,(IY+PANEL.EFL) LD B,(IY+PANEL.EFH) LD A,B OR C RET Z LD L,(IY+PANEL.CFL) LD H,(IY+PANEL.CFH) INC HL PUSH HL LD E,(IY+PANEL.FFL) LD D,(IY+PANEL.FFH) ADD HL,DE OR A SBC HL,BC POP HL RET NC LD E,(IY+PANEL.FPL) LD D,(IY+PANEL.FPH) OR A SBC HL,DE JR NC,ScrlUp1 ADD HL,DE PUSH HL CALL ResInvert POP HL LD (IY+PANEL.CFL),L LD (IY+PANEL.CFH),H CALL SetInvert JP PrnFileInfo ScrollUp: LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.FPL) LD D,(IY+PANEL.FPH) ADD HL,DE LD E,(IY+PANEL.EFL) LD D,(IY+PANEL.EFH) OR A SBC HL,DE RET NC ScrlUp1 BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) JP NZ,ScrlUpP BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JP NZ,ScrlUpT GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD DE,0x0011 ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,HL LD E,L LD D,H ADD HL,HL ADD HL,DE SET 6,H LD DE,WorkBuffer LD BC,0x000E PUSH HL LDIR POP HL LD DE,0x18*0x11 ADD HL,DE LD DE,WorkBuffer+0x10 LD C,0x0E PUSH HL LDIR POP HL LD DE,0x18*0x11 ADD HL,DE LD DE,WorkBuffer+0x20 LD C,0x0E LDIR POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor CALL ResInvert PUSH IY GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD L,(IY+PANEL.XL) LD H,(IY+PANEL.XH) LD DE,6 ADD HL,DE LD DE,71 << 8 | 63 LD BC,128 << 8 | 46 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x01 LD BC,12 << 8 | 191 LD A,(HL) DEC HL OR A PUSH DE CALL NZ,PrintName POP HL LD DE,0x0068 ADD HL,DE LD D,0x3F+0x08 LD E,0x3F LD BC,0x802E PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x11 LD BC,12 << 8 | 191 LD A,(HL) DEC HL OR A PUSH DE CALL NZ,PrintName POP HL LD DE,104 ADD HL,DE LD DE,71 << 8 | 63 LD BC,128 << 8 | 46 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x21 LD BC,12 << 8 | 191 LD A,(HL) DEC HL OR A CALL NZ,PrintName POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) INC HL LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE JP PrnHScrBar ScrlUpP GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD DE,0x0012 ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,HL LD E,L LD D,H ADD HL,HL ADD HL,DE SET 6,H LD DE,WorkBuffer LD BC,0x0018 LDIR POP AF SETPORT WINSP.CPU1,,0 LD IX,WorkBuffer LD HL,WorkBuffer LD DE,WorkBuffer+0x200 LD BC,0x000D LDIR LD A,0x01 LD (DE),A INC DE BIT DIR.B_Dir,(IX + FileHDR.Attr) CALL NZ,PutDIRTxt CALL Z,GetFileLen LD A,0x01 LD (DE),A INC DE CALL GetData LD A,0x01 LD (DE),A INC DE CALL GetTime LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor CALL ResInvert PUSH IY GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD L,(IY+PANEL.XL) LD H,(IY+PANEL.XH) LD DE,4 ADD HL,DE LD DE,71 << 8 | 63 LD BC,136 << 8 | 144 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x200 LD BC,38 << 8 | 199 CALL PrintName POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) INC HL LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE JP PrnVScrBar ScrlUpT GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer LD B,0x18 LD A,0x80 PUSH HL .L2 LD (HL),A INC L DJNZ .L2 POP DE LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD BC,0x0012 ADD HL,BC LD C,L LD B,H LD HL,0x4000 ScrDup1 PUSH BC LD A,(HL) AND 0x7F LD E,A LD A,(HL) LD (DE),A LD BC,0x0010 ADD HL,BC POP BC DEC BC LD A,B OR C JR NZ,ScrDup1 LD DE,WorkBuffer+0x100 LD BC,0x0010 LDIR POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer+0x100 LD DE,WorkBuffer+0x200 CALL MakeTreeLine LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor CALL ResInvert PUSH IY GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD L,(IY+PANEL.XL) LD H,(IY+PANEL.XH) LD DE,6 ADD HL,DE LD DE,71 << 8 | 63 LD BC,136 << 8 | 144 PUSH HL CALL ScrollDIRDownUp POP DE LD HL,WorkBuffer+0x200 LD BC,36 << 8 | 199 CALL PrintName POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) INC HL LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE JP PrnVScrBar ; На вход: ; HL - X позиция ; D - Y откуда ; Е - Y куда ; B - высота ; C - ширина ScrollDIRDownUp: SRL H RR L SET 6,H LD A,B LD (.ScrlLen),A DI LD B,C ACCEL ACCELCMD.SET_BUFFER LD A,0x00 .ScrlLen EQU $-1 ACCEL ACCELCMD.OFF .ScRect1 LD A,D SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.COPY_VERT LD A,(HL) ACCEL ACCELCMD.OFF LD A,E SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.COPY_VERT LD (HL),A ACCEL ACCELCMD.OFF INC HL DJNZ .ScRect1 EI RET ;[]===========================================================[] CursLeft BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) RET NZ LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z LD L,(IY+PANEL.CFL) LD H,(IY+PANEL.CFH) LD A,H OR L JP Z,PageUp LD DE,0x0011 SBC HL,DE JR NC,CursLRex LD HL,0x0000 JR CursLRex CursRight BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) RET NZ LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z LD L,(IY+PANEL.CFL) LD H,(IY+PANEL.CFH) LD E,(IY+PANEL.FPL) LD D,(IY+PANEL.FPH) DEC DE OR A PUSH HL SBC HL,DE POP HL JP Z,PageDown LD DE,0x0011 ADD HL,DE BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) JR NZ,.L1 LD DE,0x0032 .L1 EX DE,HL SBC HL,DE JR NC,CursRg1 LD E,(IY+PANEL.FPL) LD D,(IY+PANEL.FPH) DEC DE CursRg1 EX DE,HL PUSH HL LD E,(IY+PANEL.FFL) LD D,(IY+PANEL.FFH) ADD HL,DE LD C,(IY+PANEL.EFL) LD B,(IY+PANEL.EFH) OR A SBC HL,BC POP HL JR C,CursLRex LD L,C LD H,B OR A SBC HL,DE DEC HL PUSH HL LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) OR A SBC HL,DE POP HL RET Z CursLRex PUSH HL CALL ResInvert POP HL LD (IY+PANEL.CFL),L LD (IY+PANEL.CFH),H CALL SetInvert JP PrnFileInfo ;[]===========================================================[] PageUp LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD A,H OR L JP Z,Home PUSH HL CALL ResInvert POP HL LD E,(IY+PANEL.FPL) LD D,(IY+PANEL.FPH) OR A SBC HL,DE JR NC,.L1 LD HL,0x0000 .L1 LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H JR PageUDex PageDown LD C,(IY+PANEL.EFL) LD B,(IY+PANEL.EFH) LD A,B OR C RET Z LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.FPL) LD D,(IY+PANEL.FPH) ADD HL,DE OR A SBC HL,BC JP NC,End PUSH HL PUSH BC CALL ResInvert POP BC POP HL ADD HL,BC LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) ADD HL,DE OR A SBC HL,BC JR C,PageUDex LD L,C LD H,B LD E,(IY+PANEL.FFL) LD D,(IY+PANEL.FFH) OR A SBC HL,DE DEC HL LD (IY+PANEL.CFL),L LD (IY+PANEL.CFH),H PageUDex CALL PrintDIR CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF CALL Z,PrnHScrBar POP AF CALL NZ,PrnVScrBar LD B,0x07 PgUDext PUSH BC SPMOUSE MOUSEF.READ_STATE POP BC BIT 0,A RET Z HALT DJNZ PgUDext RET ;[]===========================================================[] Home LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z LD A,(IY+PANEL.FFL) OR (IY+PANEL.FFH) JR NZ,Home1 LD A,(IY+PANEL.CFL) OR (IY+PANEL.CFH) RET Z CALL ResInvert SUB A LD (IY+PANEL.CFL),A LD (IY+PANEL.CFH),A CALL SetInvert JP PrnFileInfo Home1 CALL ResInvert SUB A LD (IY+PANEL.FFL),A LD (IY+PANEL.FFH),A LD (IY+PANEL.CFL),A LD (IY+PANEL.CFH),A JR PageUDex End LD C,(IY+PANEL.EFL) LD B,(IY+PANEL.EFH) LD A,B OR C RET Z LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) ADD HL,DE INC HL OR A SBC HL,BC RET Z PUSH BC CALL ResInvert POP BC LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) LD E,(IY+PANEL.FPL) LD D,(IY+PANEL.FPH) ADD HL,DE INC HL OR A SBC HL,BC JR Z,End1 JR C,End1 LD L,(IY+PANEL.EFL) LD H,(IY+PANEL.EFH) LD E,(IY+PANEL.FFL) LD D,(IY+PANEL.FFH) OR A SBC HL,DE DEC HL LD (IY+PANEL.CFL),L LD (IY+PANEL.CFH),H CALL SetInvert CALL PrnFileInfo RET End1 LD L,C LD H,B OR A SBC HL,DE LD (IY+PANEL.FFL),L LD (IY+PANEL.FFH),H BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) LD L,(IY+PANEL.FPL) LD H,(IY+PANEL.FPH) DEC HL LD (IY+PANEL.CFL),L LD (IY+PANEL.CFH),H JP PageUDex ;[]==========================================================[] NewFile LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK LD A,0x00 JR NZ,NewFile1 BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD BC,0x0068 JR Z,.L1 LD BC,0x01A8 .L1 OR A SBC HL,BC JR C,NewFile1 ADD HL,BC BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD BC,0x0070 JR Z,.L2 LD BC,0x01B0 .L2 SBC HL,BC RET C ADD HL,BC BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD BC,0x00D0 JR Z,.L3 LD BC,0x0210 .L3 SBC HL,BC LD A,0x11 JR C,NewFile1 ADD HL,BC BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD BC,0x00D8 JR Z,.L4 LD BC,0x0218 .L4 SBC HL,BC RET C ADD HL,BC BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD BC,0x0138 JR Z,.L5 LD BC,0x0278 .L5 SBC HL,BC RET NC LD A,0x22 NewFile1 LD HL,0x003F OR A EX DE,HL SBC HL,DE SRL H RR L SRL H RR L SRL H RR L LD C,A LD B,0x00 ADD HL,BC LD C,(IY+PANEL.CFL) LD B,(IY+PANEL.CFH) OR A SBC HL,BC JP Z,OpenFile ADD HL,BC LD E,(IY+PANEL.FFL) LD D,(IY+PANEL.FFH) ADD HL,DE LD C,(IY+PANEL.EFL) LD B,(IY+PANEL.EFH) OR A SBC HL,BC RET NC ADD HL,BC OR A SBC HL,DE PUSH HL CALL ResInvert POP HL LD (IY+PANEL.CFL),L LD (IY+PANEL.CFH),H CALL SetInvert CALL PrnFileInfo JP ResFire ;[]==========================================================[] OpenFile BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) IF TREE_REZID JP NZ,RESIDENT.TestTreeBeg ELSE JP NZ,TestTreeR.TestTreeBeg ENDIF LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) ADD HL,DE ADD HL,HL ; *2 ADD HL,HL ; *4 ADD HL,HL ; *8 LD E,L LD D,H ADD HL,HL ; *10 ADD HL,DE ; *18 SET 6,H ; | 0x4000 LD DE,WorkBuffer LD BC,FileHDR.Attr PUSH HL ADD HL,BC LDI POP HL INC HL CALL MakeDOSname POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer BIT 4,(HL) INC HL JP Z,RunEXEfile LD A,(HL) CP '.' JR NZ,OpenF2 PUSH HL PUSH IY POP HL LD DE,PANEL.CURRPATH ADD HL,DE SUB A .L2 INC HL CP (HL) JR NZ,.L2 LD A,0x5C DEC HL CP (HL) JR Z,OpenF1 .L3 DEC HL CP (HL) JR NZ,.L3 INC HL SUB A LD DE,PrevDIR .L4 LDI CP (HL) JR NZ,.L4 LD (DE),A LD A,'.' OpenF1 POP HL OpenF2 PUSH AF PUSH HL CALL ResInvert POP HL CALL SetClock PUSH IY SPDSS DSSF.CHDIR POP IY CALL C,DOSError CALL ReadDIR PUSH IY PUSH IY SPDSS DSSF.CURDISK POP HL LD DE,PANEL.CURRPATH ADD HL,DE ADD A,'A' LD (HL),A INC HL LD (HL),':' INC HL SPDSS DSSF.CURDIR POP IY CALL PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) CALL NZ,PrintDOSPath POP AF CP '.' CALL Z,FindPrevDIR CALL PrintDIR CALL SetInvert CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE CALL InitScrollBar LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK PUSH AF CALL Z,PrnHScrBar POP AF CALL NZ,PrnVScrBar CALL SetMouse LD A,(TreeFlag) OR A JP Z,ResFire PUSH IY BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD IY,LeftPanel LD HL,RightPanel JR NZ,.L5 LD IY,RightPanel LD HL,LeftPanel .L5 LD DE,PANEL.CURRPATH ADD HL,DE INC HL INC HL IF TREE_REZID CALL RESIDENT.FindTreeDIR ELSE CALL FindTreeDIRR ENDIF CALL PrintDIR CALL PrnFileInfo PUSH IY POP IX LD DE,PANEL.BARXL ADD IX,DE CALL PrnVScrBar POP IY RET ;[]==========================================================[] ChPanel CALL ResInvert LD A,(LeftPanel) XOR 0x80 LD (LeftPanel),A LD A,(RightPanel) XOR 0x80 LD (RightPanel),A CALL PrintPath BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR Z,ChPan1 GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L1 LD A,(RAMPAGES.RIGHTPANEL) .L1 SETPORT WINSP.CPU1,,0 SETPORT WINSP.Y_PORT,0xC0 LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL SET 6,H INC HL SET 1,(HL) POP AF SETPORT WINSP.CPU1,,0 CALL PrintDIR ChPan1 LD IY,LeftPanel BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) JR NZ,.L1 LD IY,RightPanel .L1 CALL PrintPath CALL PrintDOSPath BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JR Z,ChPan2 GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L2 LD A,(RAMPAGES.RIGHTPANEL) .L2 SETPORT WINSP.CPU1,,0 SETPORT WINSP.Y_PORT,0xC0 LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL SET 6,H INC HL RES 1,(HL) POP AF SETPORT WINSP.CPU1,,0 CALL PrintDIR ChPan2 CALL SetInvert PUSH IY POP HL LD DE,PANEL.CURRPATH ADD HL,DE PUSH IY SPDSS DSSF.CHDIR POP IY RET NC CALL DOSError JP BegDIRECTORY ;[]==========================================================[] ChangeDriveL LD IX,LeftPanel JR ChangeDrive ChangeDriveR LD IX,RightPanel ChangeDrive PUSH IY PUSH IX POP IY LD C,(IY+PANEL.XL) LD B,(IY+PANEL.XH) INC BC INC BC OR A SBC HL,BC LD BC,0x001C LD A,0xFF .L1 INC A SBC HL,BC JR NC,.L1 ADD A,'A' PUSH IY POP HL LD DE,PANEL.CURRPATH ADD HL,DE LD (HL),D LD HL,NewDrive LD (HL),A CALL NewDIRECTORY LD A,(AutoActivatePanel) AND A JR NZ,loc_C82E BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) POP IY JP Z,ChPanel ; RET NZ RET loc_C82E BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) POP IY RET NZ PUSH IY POP HL LD DE,PANEL.CURRPATH ADD HL,DE PUSH IY SPDSS DSSF.CHDIR POP IY RET NC CALL DOSError JP BegDIRECTORY NewDrive DZ " :\\" ;[]==========================================================[] ReplacePanels LD IX,LeftPanel SET PANELFLAG.B_SIDE,(IX+PANEL.PANELFLAG) LD L,(IX+PANEL.XL) LD H,(IX+PANEL.XH) LD IX,RightPanel RES PANELFLAG.B_SIDE,(IX+PANEL.PANELFLAG) LD E,(IX+PANEL.XL) LD D,(IX+PANEL.XH) LD (IX+PANEL.XL),L LD (IX+PANEL.XH),H LD IX,LeftPanel LD (IX+PANEL.XL),E LD (IX+PANEL.XH),D LD HL,RAMPAGES.LEFTPANEL LD DE,RAMPAGES.RIGHTPANEL LD A,(DE) LDI DEC HL LD (HL),A LD HL,LeftPanel LD DE,RightPanel LD BC,PANEL.CURRPATH + 0x100 ReplPan LD A,(DE) LDI DEC HL LD (HL),A INC HL JP PE,ReplPan LD A,0x01 JP InitPanels ;[]==========================================================[] ShowDOSscreen CALL ResVideoMode ShowDSlp SPDSS DSSF.SCANKEY JR NZ,ShowDSexit SPMOUSE MOUSEF.READ_STATE OR A JR Z,ShowDSlp ShowDSexit SPDSS DSSF.SETVMOD,0,SETVMOD.GRF640X256 JP ResFire ;[]==========================================================[] RunEXEfile: LD IX,fn_ext LD DE,PrevFile PUSH DE SUB A .L1 LDI CP (HL) JR NZ,.L1 LD (DE),A POP DE LD L,E LD H,D .L2 INC HL LD A,(HL) AND A SCF RET Z CP '.' JR NZ,.L2 INC HL LD A,(HL) INC HL RES 5,A cp 'B' jp z,RunBATfile CP 'F' JP Z,RunFLXfile CP 'E' JP NZ,TestEXT LD A,(HL) INC HL RES 5,A CP 'X' JP NZ,TestEXT LD A,(HL) RES 5,A CP 'E' JP NZ,TestEXT RunFile: PUSH DE CALL ResDrivers SUB A CALL ClearScreen CALL ResVideoMode POP HL SPDSS DSSF.EXEC,0 PUSH AF SETPORT BORDER,0 ;!FIXIT проверить для это оно или нет SAFE_PORTY SETPORT WINSP.Y_PORT,0xC0 CALL InitVideoMode CALL InitDrivers CALL InitScreen CALL ClearDOSline LD A,0x02 CALL InitPanels POP AF JP C,DOSError RET ;[]----------------------------------------------------------[] RunBATfile: LD A,(HL) INC HL RES 5,A CP 'A' JP NZ,TestEXT LD A,(HL) RES 5,A CP 'T' JP NZ,TestEXT PUSH DE ld hl,ShellFile ld de,WorkBuffer call CopyString bit PANELFLAG.B_SIDE,(iy+PANEL.PANELFLAG) ld hl,RightPanel + PANEL.CURRPATH jr nz,.next ld hl,LeftPanel + PANEL.CURRPATH .next: call ConcatString dec de ex hl,de ld a,'\\' cp (hl) jr z,.skipSlash inc hl ld (hl),a .skipSlash: inc hl ex hl,de pop hl call CopyString ld de,WorkBuffer jr RunFile ;[]----------------------------------------------------------[] ; запуск FLX плагина из панели по ENTER RunFLXfile LD A,(HL) INC HL RES 5,A CP 'L' JP NZ,TestEXT LD A,(HL) RES 5,A CP 'X' JP NZ,TestEXT EX DE,HL LD DE,WorkBuffer SUB A .L1 LDI CP (HL) JR NZ,.L1 LD (DE),A CALL RunFLX JP C,DOSError RET ;[]-----------------------------------------------------------[] TestEXT: PUSH IX LD IXL,E LD IXH,D EX DE,HL LD A,'.' .L1 INC HL CP (HL) JR NZ,.L1 INC HL EX DE,HL POP HL GETPORT WINSP.CPU1 PUSH AF LD A,(RAMPAGES.FNHELP) SETPORT WINSP.CPU1,,0 TestEXT1: LD C,(HL) INC HL LD B,(HL) INC HL LD A,B OR C JR Z,TestEND PUSH DE EX DE,HL LD A,(DE) INC DE CP '?' JR Z,.L1 CP (HL) JR NZ,TestEXTn .L1 INC HL LD A,(DE) INC DE CP '?' JR Z,.L2 CP (HL) JR NZ,TestEXTn .L2 INC HL LD A,(DE) INC DE CP '?' JR Z,TestEXTn CP (HL) TestEXTn: EX DE,HL POP DE JR Z,TestEXTok LD L,C LD H,B JR TestEXT1 TestEND: POP AF SETPORT WINSP.CPU1,,0 SCF RET TestEXTok: LD DE,WorkBuffer LD C,0x00 TstEXT0: LD A,C LDI LD C,A LD A,(HL) OR A JR Z,TstEXT2 CP ' ' JR Z,TstEXT1 CP '.' JR NZ,TstEXT0 LD (DE),A INC HL INC DE LD A,(HL) LD (DE),A INC HL INC DE CP ' ' JR Z,TstEXT1 RES 5,A CP 'F' JR NZ,.L1 SET 0,C .L1 LD A,(HL) LD (DE),A INC HL INC DE CP ' ' JR Z,TstEXT1 RES 5,A CP 'L' JR NZ,.L2 SET 1,C .L2 LD A,(HL) LD (DE),A INC HL INC DE CP ' ' JR Z,TstEXT1 RES 5,A CP 'X' JR NZ,TstEXT1 SET 2,C TstEXT1: LD A,(HL) CP '!' JR NZ,TstEX11 INC HL LD A,(HL) CP '.' JP Z,EName CP ':' JP Z,EDrive CP '\\' JP Z,EPath DEC HL TstEX11: LD (DE),A INC HL INC DE OR A JR NZ,TstEXT1 TstEXT2: LD (DE),A POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer LD A,C CP 0x07 JP Z,RunFLX LD DE,WorkBuffer+0x100 PUSH IY SPDSS DSSF.F_FIRST,1,0x37 POP IY JP C,RestoreDIR CALL ResDrivers SUB A CALL ClearScreen CALL ResVideoMode LD HL,WorkBuffer SPDSS DSSF.EXEC,0 PUSH AF SETPORT BORDER,0 ; !FIXIT проверить для это оно или нет SAFE_PORTY SETPORT WINSP.Y_PORT,0xC0 CALL InitVideoMode CALL InitDrivers CALL InitScreen CALL ClearDOSline LD A,0x02 CALL InitPanels POP AF CALL C,DOSError OR A RET RestoreDIR: PUSH AF PUSH IY POP HL LD BC,PANEL.CURRPATH ADD HL,BC PUSH IY SPDSS DSSF.CHDIR POP IY POP AF RET EName: INC HL LD A,(HL) DEC HL CP '!' JR NZ,TstEX11 INC HL PUSH HL PUSH BC LD HL,PrevFile SUB A .L1 LDI CP (HL) JR NZ,.L1 POP BC POP HL INC HL JP TstEXT1 EDrive: LD A,(IY+PANEL.CURRPATH) LD (DE),A INC DE LD A,':' LD (DE),A INC DE INC HL JP TstEXT1 EPath: PUSH HL PUSH BC PUSH IY POP HL LD BC,PANEL.CURRPATH ADD HL,BC SUB A .L1 LDI CP (HL) JR NZ,.L1 DEC HL LD A,'\\' CP (HL) JR Z,.L2 LD (DE),A INC DE .L2 POP BC POP HL INC HL JP TstEXT1 ; запуск FLX файла RunFLX: LD HL,RestoreDIR PUSH HL LD HL,WorkBuffer LD A,0x21 .L1 INC HL CP (HL) JR C,.L1 SUB A LD (HL),A INC HL PUSH HL LD HL,WorkBuffer PUSH IY SPDSS DSSF.OPEN,,1 POP IY POP HL RET C LD (.FLXHandle),A PUSH HL LD IX,0x0000 LD HL,0x0000 PUSH IY SPDSS DSSF.MOVE_FP,2 POP IY LD A,IXH AND 0xC0 OR H OR L POP HL SCF LD A,0x1E RET NZ PUSH IY PUSH HL ; !FIXIT проверить для этого оно или нет SAFE_PORTY SETPORT WINSP.Y_PORT,0xC0 LD IX,0x0000 LD HL,0x0000 LD A,(.FLXHandle) SPDSS DSSF.MOVE_FP,0 GETPORT WINSP.CPU1 PUSH AF LD A,(RAMPAGES.FLX) SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer + 0x0100 LD DE,0x0010 LD A,(.FLXHandle) PUSH HL SPDSS DSSF.READ POP HL JR C,.L2 LD A,(HL) INC HL CP 'F' SCF LD A,0x10 JR NZ,.L2 LD A,(HL) INC HL CP 'L' SCF LD A,0x10 JR NZ,.L2 LD A,(HL) INC HL CP 'X' SCF LD A,0x10 JR NZ,.L2 LD L,0x08 LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL LD B,(HL) INC HL LD (.FLXexec),BC LD A,(HL) INC HL LD (.FLXmode),A RES 7,D SET 6,D LD HL,0x8000 OR A SBC HL,DE EX DE,HL LD A,(.FLXHandle) SPDSS DSSF.READ .L2: EX AF,AF' POP AF SETPORT WINSP.CPU1,,0 EX AF,AF' PUSH AF LD A,(.FLXHandle) SPDSS DSSF.CLOSE POP AF POP HL POP IY RET C LD DE,0x0000 .FLXexec EQU $-2 SET 7,D SET 6,D LD A,(RAMPAGES.FLX) LD C,WINSP.CPU3 PUSH IY CALL Resident POP IY CCF RET NC LD A,0x00 .FLXmode: EQU $-1 OR A RET Z INC SP INC SP SETPORT BORDER,0 ; !FIXIT проверить для это оно или нет SAFE_PORTY SETPORT WINSP.Y_PORT,0xC0 CALL InitScreen CALL ClearDOSline LD A,0x02 CALL InitPanels OR A RET .FLXHandle: DEFB 0x00 ;[]===========================================================[] Help: LD DE,HelpR LD A,(RAMPAGES.FNHELP) LD C,WINSP.CPU1 JP Resident ;[]----------------------------------------------------------[] ViewFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) RET NZ LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z CALL ResInvert LD HL,SetInvert PUSH HL MAKEWINDOW WINSUBOBJ.STORE W_MAIN 200,81,240,62 W_FILL 4,2,232,10,COLORI.BLACK W_TEXT 108,3,COLORI.WHITE,"View" W_BUTTON 40,42,72,14 W_TEXT 68,45,COLORP.HIGHGRAY,"Ok" W_BUTTON 128,42,72,14 W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel" W_TEXT 12,25,COLORP.HIGHGRAY,"View the file:" W_BORDER 86,22,134,12 W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,ViewStr LD HL,ViewEditTab CALL InputLine WINDOWCLOSE RET C LD A,(ViewLen) OR A RET Z LD HL,ViewName LD DE,PrevFile LD B,A ViewSH1: LD A,(HL) IF CORR_FILENAME CALL CorrBigChar ENDIF LD (HL),A LD (DE),A INC HL INC DE DJNZ ViewSH1 SUB A LD (DE),A POP HL CALL SetInvert JP View ViewStr: DEFB 0x0C,0x00,0x00,0x00 ViewLen: DEFB 0x00 DEFW 0x0122,0x006A DEFW 0x0068 DEFB 0xF0 ViewName: DB 0x0D DUP 0x00 ;------------------------------------------- ViewFile: SUB A JR StViewFile.L1 ;------------------------------------------- StViewFile: LD A,0x01 .L1 LD (VFlag+1),A BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) RET NZ LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L2 ;!FIXIT LD A,(RAMPAGES.RIGHTPANEL) .L2 SETPORT WINSP.CPU1,,0 LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) ADD HL,DE ADD HL,HL ; *2 ADD HL,HL ; *4 ADD HL,HL ; *8 LD E,L LD D,H ADD HL,HL ; *10 ADD HL,DE ; *18 SET 6,H ; | 0x4000 LD DE,WorkBuffer LD BC,FileHDR.Attr PUSH HL ADD HL,BC LDI POP HL INC HL CALL MakeDOSname POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer BIT 4,(HL) RET NZ INC HL LD DE,PrevFile SUB A .L3 LDI CP (HL) JR NZ,.L3 LD (DE),A VFlag: LD A,0x00 OR A JR NZ,View1 View: LD IX,fnview_ext LD DE,PrevFile CALL TestEXT RET NC View1: CALL ResInvert LD HL,SetInvert PUSH HL PUSH IY LD HL,PrevFile LD DE,0xC000 LD A,(RAMPAGES.FNVIEW) LD C,WINSP.CPU3 CALL Resident POP IY RET C SETPORT BORDER,0 ; !FIXIT проверить для это оно или нет SAFE_PORTY SETPORT WINSP.Y_PORT,0xC0 CALL InitScreen CALL ClearDOSline LD A,0x02 CALL InitPanels POP HL RET ;[]----------------------------------------------------------[] EditFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) RET NZ CALL ResInvert LD HL,SetInvert PUSH HL MAKEWINDOW WINSUBOBJ.STORE W_MAIN 200,81,240,62 W_FILL 4,2,232,10,COLORI.BLACK W_TEXT 110,3,COLORI.WHITE,"Edit" W_BUTTON 40,42,72,14 W_TEXT 68,45,COLORP.HIGHGRAY,"Ok" W_BUTTON 128,42,72,14 W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel" W_TEXT 12,25,COLORP.HIGHGRAY,"Edit the file:" W_BORDER 86,22,134,12 W_FILL 88,23,130,10,COLORI.WHITE W_END LD IX,EditStr LD HL,ViewEditTab CALL InputLine WINDOWCLOSE RET C LD A,(EditLen) OR A RET Z LD HL,EditName LD DE,PrevFile LD B,A EditSH1: LD A,(HL) IF CORR_FILENAME CALL CorrBigChar ENDIF LD (HL),A LD (DE),A INC HL INC DE DJNZ EditSH1 SUB A LD (DE),A POP HL CALL SetInvert JP Edit EditStr: DEFB 0x0C,0x00,0x00,0x00 EditLen: DEFB 0x00 DEFW 0x0122,0x006A DEFW 0x0068 DEFB 0xF0 EditName: DB 0x0D DUP 0x00 ;------------------------------------------- EditFile: SUB A JR StEditFile.L1 ;------------------------------------------- StEditFile: LD A,0x01 .L1 LD (EFlag),A BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) RET NZ LD A,(IY+PANEL.EFL) OR (IY+PANEL.EFH) RET Z GETPORT WINSP.CPU1 PUSH AF BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD A,(RAMPAGES.LEFTPANEL) JR Z,.L2 ;!FIXIT LD A,(RAMPAGES.RIGHTPANEL) .L2 SETPORT WINSP.CPU1,,0 LD L,(IY+PANEL.FFL) LD H,(IY+PANEL.FFH) LD E,(IY+PANEL.CFL) LD D,(IY+PANEL.CFH) ADD HL,DE ADD HL,HL ; *2 ADD HL,HL ; *4 ADD HL,HL ; *8 LD E,L LD D,H ADD HL,HL ; *10 ADD HL,DE ; *18 SET 6,H ; | 0x4000 LD DE,WorkBuffer LD BC,FileHDR.Attr PUSH HL ADD HL,BC LDI POP HL INC HL CALL MakeDOSname POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer BIT 4,(HL) RET NZ INC HL LD DE,PrevFile SUB A .L3 LDI CP (HL) JR NZ,.L3 LD (DE),A LD A,0x00 EFlag: EQU $-1 OR A JR NZ,Edit1 Edit: LD IX,fnedit_ext LD DE,PrevFile CALL TestEXT RET NC Edit1: CALL ResInvert LD HL,SetInvert PUSH HL PUSH IY LD HL,PrevFile LD DE,CPU3 LD A,(RAMPAGES.FNEDIT) LD C,WINSP.CPU3 CALL Resident POP IY RET C SETPORT BORDER,0 ; !FIXIT проверить для это оно или нет SAFE_PORTY SETPORT WINSP.Y_PORT,0xC0 CALL InitScreen CALL ClearDOSline LD A,0x02 CALL InitPanels POP HL RET