; LAST UPDATE: 24.07.2025 savelij ;[]----------------------------------------------------------[] PrintDisks LD L,(IY + PANEL.X) LD H,(IY + PANEL.X + 1) INC HL INC HL LD (.DiskX1),HL LD DE,0x0004 ADD HL,DE LD (.DiskX2),HL LD DE,0x0006 ADD HL,DE LD (.NameX),HL LD A,'A' LD (.DISK),A PUSH IY POP HL LD DE,PANEL.CURR_PATH ADD HL,DE LD A,(HL) SUB 'A' LD C,A LD A,(NUM_DEVICES) LD B,A .L1 LD A,C OR A LD DE,(COLORP.BLACK + COLORI.BLACKGRAY) << 8 | (COLORP.BLACKGRAY + COLORI.YELLOW) JR Z,.L2 LD DE,(COLORP.BLACK + COLORI.HIGHGRAY) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK) .L2 LD A,D LD (.ColRect),A LD A,E LD (.ColName),A MAKEWINDOW WINSUBOBJ.WOBIND W_BUTTON 0,30,28,12 .DiskX1 EQU $ - 8 .LnDiskX EQU $ - 4 W_FILL 0,32,20,8,COLORI.BLACK .DiskX2 EQU $ - 9 .ColRect EQU $ - 1 W_TEXT 0,32,COLORI.BLACK," " .NameX EQU $ - 7 .ColName EQU $ - 3 .DISK EQU $ - 2 W_END LD HL,(.DiskX1) LD DE,(.LnDiskX) ADD HL,DE LD (.DiskX1),HL LD HL,(.DiskX2) ADD HL,DE LD (.DiskX2),HL LD HL,(.NameX) ADD HL,DE LD (.NameX),HL LD HL,.DISK INC (HL) DEC C DJNZ .L1 RET ;[]----------------------------------------------------------[] PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) LD A,COLORP.BLACK + COLORI.BLACK LD C,COLORP.BLACK + COLORI.WHITE JR NZ,.L1 LD A,COLORP.BLACK + COLORI.BLACKGRAY LD C,COLORP.BLACKGRAY + COLORI.WHITE .L1 LD (.HeadCol),A LD A,C LD (.PathCol),A LD L,(IY + PANEL.X) LD H,(IY + PANEL.X + 1) LD (.PanelHX),HL MAKEWINDOW WINSUBOBJ.WOBIND W_FILL 0,46,310,12,COLORI.BLACK .PanelHX EQU $ - 9 .HeadCol EQU $ - 1 W_END PUSH IY POP HL LD BC,PANEL.CURR_PATH ADD HL,BC PUSH HL LD DE,WorkBuffer SUB A .L2 LDI CP (HL) JR NZ,.L2 DEC HL LD A,'\\' CP (HL) JR Z,.L3 LD (DE),A INC DE .L3 POP HL SUB A LD (DE),A BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JR NZ,.PrPath1 LD BC,0x000D SBC HL,BC BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG) JR NZ,.L4 LD HL,NORMmask .L4 LDIR .PrPath1 LD IX,300 LD HL,(.PanelHX) LD DE,WorkBuffer LD BC,0x0006 ADD HL,BC EX DE,HL LD C,0x30 LD A,0x00 .PathCol EQU $-1 JP PrnRangPathL ;[]----------------------------------------------------------[] PrintDOSPath PUSH IY POP HL LD BC,PANEL.CURR_PATH ADD HL,BC LD DE,WorkBuffer SUB A .L1 LDI CP (HL) JR NZ,.L1 DEC HL LD A,'\\' CP (HL) JR Z,.L2 LD (DE),A INC DE .L2 LD A,'>' LD (DE),A INC DE SUB A LD (DE),A MAKEWINDOW WINSUBOBJ.WOBIND W_FILL 4,231,246,8,COLORI.HIGHGRAY W_END LD IX,246 LD HL,WorkBuffer LD DE,250 LD BC,231 LD A,COLORP.HIGHGRAY + COLORI.BLACK JP PrnRangPathR ;[]----------------------------------------------------------[] PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JP NZ,PrnTreeInfo ;Tree LD A,(IY + PANEL.FILES_MARK) OR (IY + PANEL.FILES_MARK + 1) JP NZ,PrnSelInfo 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.FIRST_FILE) LD H,(IY + PANEL.FIRST_FILE + 1) LD E,(IY + PANEL.CURR_FILE) LD D,(IY + PANEL.CURR_FILE + 1) 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.SIZE CALL MoveBytes POP AF SETPORT WINSP.CPU1,,0 LD HL,WorkBuffer + FileHDR.SIZE;0x18 LD B,38 LD A,' ' .L2 LD (HL),A INC HL DJNZ .L2 LD (HL),0x00 LD IX,WorkBuffer LD HL,WorkBuffer+1 LD A,(HL) OR A JR Z,PrntFI LD DE,WorkBuffer + FileHDR.SIZE;0x18 LD B,0x08 .EFI0 LD A,(HL) CP ' ' JR Z,.EFI1 INC HL LD (DE),A INC DE DJNZ .EFI0 .EFI1 LD A,B OR A JR Z,.L3 .L4 INC HL DJNZ .L4 .L3 LD B,0x03 INC HL LD A,(HL) CP ' ' JR NZ,.EFI3 .EFI2 LD A,(HL) INC HL LD (DE),A INC DE DJNZ .EFI2 .EFI3 LD A,B OR A JR Z,.EndFI LD A,'.' LD (DE),A INC DE .EFI4 LD A,(HL) INC HL LD (DE),A INC DE DJNZ .EFI4 .EndFI LD DE,WorkBuffer + FileHDR.SIZE + FileHDR.Zero;0x18 + 0x0D CALL GetFileLen LD DE,WorkBuffer + FileHDR.SIZE + FileHDR.SIZE;0x18+0x18 CALL GetData INC DE CALL GetTime PrntFI LD HL,WorkBuffer + FileHDR.SIZE;0x18 LD E,(IY+PANEL.X) LD D,(IY+PANEL.X + 1) INC DE INC DE INC DE INC DE LD BC,215 LD A,COLORP.HIGHGRAY + COLORI.BLACK JP PrnTxtLnNorm GetFileLen BIT DIR.B_Dir,(IX + FileHDR.Attr) JP NZ,PDirectory RES DIR.B_Device,(IX + FileHDR.Attr) LD HL,GetLenExit LD (ChooseStringFormat.address),HL LD L,(IX + FileHDR.SizeBytes) LD H,(IX + FileHDR.SizeBytes + 1) EXX LD L,(IX + FileHDR.SizeBytes + 2) LD H,(IX + FileHDR.SizeBytes + 3) EXX JP ConvNumTxt32_Shared GetLenExit CP 0x30 JR Z,.L1 SET DIR.B_Device,(IX + FileHDR.Attr) .L1 BIT DIR.B_Device,(IX + FileHDR.Attr) JR NZ,.L2 LD A,0x20 .L2 LD (DE),A INC DE RET PDirectory LD HL,DirText LD BC,0x000A LDIR RET DirText DEFB " " ; Дата GetData EX DE,HL LD A,(IX + FileHDR.Date) CALL Get8Bit LD (HL),'.' INC HL LD A,(IX + FileHDR.Month) CALL Get8Bit LD (HL),'.' INC HL LD A,(IX + FileHDR.Year) ;Год CALL Get8Bit EX DE,HL RET ; Время GetTime EX DE,HL LD A,(IX + FileHDR.Hours) ;Часы CALL Get8Bit LD (HL),':' INC HL LD A,(IX + FileHDR.Minutes) CALL Get8Bit EX DE,HL RET Get8Bit LD B,'0' - 1 .L1 INC B SUB 10 JR NC,.L1 ADD A,10 LD (HL),B INC HL ADD A,'0' LD (HL),A INC HL RET PrnTreeInfo IF TREE_REZID CALL RESIDENT.MakeTreePath ELSE CALL MakeTreePathR ENDIF EX DE,HL PUSH IY POP HL LD BC,PANEL.CURR_PATH ADD HL,BC INC HL INC HL EX DE,HL SUB A .L1 LDI CP (HL) JR NZ,.L1 LD (DE),A CALL PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) JP NZ,PrintDOSPath RET PrnSelInfo LD L,(IY+PANEL.BYTES_MARK) LD H,(IY+PANEL.BYTES_MARK + 1) LD C,(IY+PANEL.BYTES_MARK + 2) LD B,(IY+PANEL.BYTES_MARK + 3) LD A,(IY+PANEL.BYTES_MARK_H) ; [ ] FAT32 LD DE,WorkBuffer CALL ConvNumTxt40 ; [ ] fat32 LD HL,CrSizeT LD BC,0x000A LDIR LD L,(IY+PANEL.FILES_MARK) LD H,(IY+PANEL.FILES_MARK + 1) CALL ConvNumTxt16 LD HL,CrSelT LD BC,0x000F LDIR LD A,E LD DE,WorkBuffer+0x100 LD C,A SUB 38 NEG SRL A LD B,A JR Z,.PrSelI1 LD A,0x20 .L1 LD (DE),A INC E DJNZ .L1 .PrSelI1 LD HL,WorkBuffer LDIR LD A,38 SUB E JR Z,.PrSelI2 LD B,A LD A,0x20 .L2 LD (DE),A INC E DJNZ .L2 .PrSelI2 SUB A LD (DE),A LD HL,WorkBuffer+0x100 LD E,(IY+PANEL.X) LD D,(IY+PANEL.X + 1) INC DE INC DE INC DE INC DE LD BC,215 LD A,COLORP.HIGHGRAY + COLORI.BLACK JP PrnTxtLnNorm CrSizeT DEFB " bytes in " CrSelT DEFB " selected files" ;[]----------------------------------------------------------[] PrintDIR LD A,(IY+PANEL.FILES_ALL) OR (IY+PANEL.FILES_ALL + 1) JR NZ,PrnDIRECT LD L,(IY+PANEL.X) LD H,(IY+PANEL.X + 1) INC HL INC HL LD (.ClrDIR1),HL LD HL,308 LD DE,141 LD A,(IY+PANEL.VIEWFLAG) AND VIEWFLAG.MASK JR Z,.L1 LD HL,292 LD DE,149 .L1 LD (.H),HL LD (.V),DE MAKEWINDOW WINSUBOBJ.WOBIND W_FILL 0,60,0,0,COLORI.PANEL .ClrDIR1 EQU $ - 9 .H EQU $ - 5 .V EQU $ - 3 W_END RET PrnDIRECT BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG) JP NZ,PrintFULL BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG) JP NZ,PrintTREE ; Краткий список PUSH IY 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.FIRST_FILE) LD H,(IY+PANEL.FIRST_FILE + 1) 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,0x33 * FileHDR.SIZE;0x18 CALL MoveBytes POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD HL,WorkBuffer PUSH HL BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD HL,PositTABLeft JR Z,.L2 LD HL,PositTABRight .L2 LD B,0x33 .PrnDIR1 LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL EX (SP),HL PUSH HL PUSH BC LD B,0x0C CALL PrintName POP BC POP HL LD DE,0x0019 ADD HL,DE LD A,(HL) DEC HL OR A JR Z,PrnDIR2 EX (SP),HL DJNZ .PrnDIR1 JR PrnDIRe PrnDIR2 DEC B JR Z,PrnDIRe LD HL,EmptyFile EX (SP),HL PrnDIR3 LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL EX (SP),HL PUSH HL PUSH BC LD B,0x0C CALL PrintName POP BC POP HL EX (SP),HL DJNZ PrnDIR3 PrnDIRe POP HL POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY RET EmptyFile DB 0x00," ",0x01," ",0x00 ; Подробный список PrintFULL PUSH IY 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.FIRST_FILE) LD H,(IY+PANEL.FIRST_FILE + 1) 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,0x12 * FileHDR.SIZE;0x18 CALL MoveBytes POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 LD HL,WorkBuffer BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD DE,8 JR Z,.L2 LD DE,328 .L2 LD BC,0x123F .PrnDIRp PUSH HL PUSH DE PUSH BC PUSH HL LD DE,WorkBuffer+0x200 LD BC,0x000D LDIR LD A,0x01 LD (DE),A INC DE POP IX 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 POP BC POP DE POP HL PUSH DE PUSH BC PUSH HL LD HL,WorkBuffer+0x200 LD B,0x26 CALL PrintName POP HL LD BC,0x0019 ADD HL,BC POP BC LD A,C ADD A,0x08 LD C,A POP DE LD A,(HL) DEC HL OR A JR Z,.PrnDIRp2 DJNZ .PrnDIRp JR .PrnDIRpE .PrnDIRp2 DEC B JR Z,.PrnDIRpE LD HL,EmptyFile1 .PrnDIRp3 PUSH HL PUSH DE PUSH BC LD B,0x26 CALL PrintName POP BC LD A,C ADD A,0x08 LD C,A POP DE POP HL DJNZ .PrnDIRp3 .PrnDIRpE POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 POP IY RET PutDIRTxt EX AF,AF' LD HL,DIRt1 LD A,(IX + FileHDR.Name) CP '.' JR Z,.L1 LD HL,DIRt2 .L1 LD BC,0x000A LDIR EX AF,AF' RET DIRt1 DEFB 0x20,0x10,"UP--DIR",0x11 DIRt2 DEFB 0x20,0x10,"SUB-DIR",0x11 EmptyFile1 DEFB 0x00," " DEFB 0x01," " DEFB 0x01," " DEFB 0x01," " DEFB 0x01," " ; Дерево каталогов PrintTREE 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.FIRST_FILE) LD B,(IY+PANEL.FIRST_FILE + 1) LD A,B OR C JR Z,.PrDIRb2 .PrDIRb1 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,.PrDIRb1 .PrDIRb2 LD DE,WorkBuffer+0x100 LD BC,0x12*0x10 CALL MoveBytes POP AF SETPORT WINSP.CPU1,,0 LD B,COLORP.PANEL + COLORI.FILES LD C,COLORP.PANEL + COLORI.SELECTFILES CALL InsPrnColor GETPORT WINSP.Y_PORT ; Сохраняем Y порт LD C,A GETPORT WINSP.CPU1 LD B,A PUSH BC SETPORT WINSP.CPU1,0x50 BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD HL,WorkBuffer+0x100 LD DE,10 JR Z,.L3 LD DE,330 .L3 LD BC,0x123F .PrnDIRt PUSH HL PUSH DE PUSH BC LD DE,WorkBuffer+0x300 CALL MakeTreeLine POP BC POP DE POP HL PUSH DE PUSH BC PUSH HL LD HL,WorkBuffer+0x300 LD B,0x24 PUSH IY CALL PrintName POP IY POP HL LD BC,0x000F ADD HL,BC POP BC LD A,C ADD A,0x08 LD C,A POP DE LD A,(HL) INC HL INC A JR Z,.PrnDIRt2 DEC B JP NZ,.PrnDIRt JR .PrnDIRtE .PrnDIRt2 DEC B JR Z,.PrnDIRtE LD HL,EmptyFile2 PUSH IY .PrnDIRt3 PUSH HL PUSH DE PUSH BC LD B,0x24 CALL PrintName POP BC LD A,C ADD A,0x08 LD C,A POP DE POP HL DJNZ .PrnDIRt3 POP IY .PrnDIRtE POP BC LD A,B SETPORT WINSP.CPU1,,0 LD A,C SETPORT WINSP.Y_PORT,,0 RET MakeTreeLine SUB A LD (DE),A INC E LD C,(HL) INC HL LD A,(HL) INC HL LD IXL,A LD A,' ' LD (DE),A INC E INC C DEC C ; r.C=0 "\" JR Z,.MTreeL2 PUSH HL LD A,C AND 0x7F LD B,A LD HL,WorkBuffer PUSH HL LD L,A LD (HL),C POP HL DEC B JR Z,.MTreeL1 .MTreeL0 INC HL BIT 7,(HL) LD A,0xB3 JR Z,.L1 LD A,' ' .L1 LD (DE),A INC E BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) JR NZ,.L2 LD A,' ' LD (DE),A INC E .L2 DJNZ .MTreeL0 .MTreeL1 BIT 7,C LD A,0xC3 JR Z,.L3 LD A,0xC0 .L3 LD (DE),A INC E BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) JR NZ,.L4 LD A,0xC4 LD (DE),A INC E .L4 POP HL .MTreeL2 LD A,IXL BIT 1,A JR Z,.MTreeL3 BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) JR NZ,.L5 DEC E .L5 LD A,0xDD LD (DE),A INC E LD A,IXL .MTreeL3 BIT 0,A LD A,0x02 JR NZ,.L6 INC A .L6 LD (DE),A INC E SUB A .L7 LDI CP (HL) JR NZ,.L7 LD A,0x03 LD (DE),A INC E LD A,IXL BIT 1,A JR Z,.MTreeL5 LD A,0xDE LD (DE),A INC E .MTreeL5 LD A,0x28 SUB E JR Z,.MTreeL6 JR C,.MTreeL6 LD B,A LD A,0x20 .L8 LD (DE),A INC E DJNZ .L8 .MTreeL6 LD A,IXL BIT 0,A RET Z LD E,0x26 LD A,0x02 LD (DE),A INC E LD A,0x11 LD (DE),A RET EmptyFile2 DEFB 0x00 DB 0x24 DUP ' ' InsPrnColor LD HL,PrnINKd1 ; INK буфер LD DE,PrnPAPd1 ; PAPER буфер PUSH BC LD A,B PUSH AF AND 0x0F ; INK LD C,A RLCA RLCA RLCA RLCA OR C CPL LD B,0x08 .L1 LD (HL),A INC HL DJNZ .L1 LD B,A POP AF AND 0xF0 ; PAPER LD C,A RRCA RRCA RRCA RRCA OR C XOR B ; XOR с INK LD B,0x08 .L2 LD (DE),A INC DE DJNZ .L2 POP BC LD HL,PrnINKd2 ; INK буфер LD DE,PrnPAPd2 ; PAPER буфер LD A,C PUSH AF AND 0x0F ; INK LD C,A RLCA RLCA RLCA RLCA OR C CPL LD B,0x08 .L3 LD (HL),A INC HL DJNZ .L3 LD B,A POP AF AND 0xF0 ; PAPER LD C,A RRCA RRCA RRCA RRCA OR C XOR B ; XOR с INK LD B,0x08 .L4 LD (DE),A INC DE DJNZ .L4 RET PrnINKd1 DB 8 DUP 0 PrnPAPd1 DB 8 DUP 0 PrnINKd2 DB 8 DUP 0 PrnPAPd2 DB 8 DUP 0 PrintName LD IYL,C ; Y координата LD A,(HL) INC HL PUSH DE EXX LD HL,PrnPAPd1 ; INK буфер LD DE,PrnINKd1 ; PAPER буфер OR A JR Z,.L1 LD HL,PrnPAPd2 ; INK буфер LD DE,PrnINKd2 ; PAPER буфер .L1 POP BC SRL B RR C SET 6,B EXX DI GETPORT WINSP.CPU0 PUSH AF LD A,(RAMPAGES.FNFONT) SETPORT WINSP.CPU0,,0 LD A,B LD C,L ; Адрес строки LD B,H ACCEL ACCELCMD.SET_BUFFER LD H,0x08 ACCEL ACCELCMD.OFF .L2 EX AF,AF' LD A,(BC) INC BC CP 0x03 JR NZ,.L3 EXX LD HL,PrnPAPd1 ; INK буфер LD DE,PrnINKd1 ; PAPER буфер EXX JR .L5 .L3 CP 0x02 JR NZ,.L4 EXX LD HL,PrnPAPd2 ; INK буфер LD DE,PrnINKd2 ; PAPER буфер EXX .L5 LD A,(BC) INC BC .L4 PUSH BC CP 0x01 LD B,0x04 JR NZ,.L6 LD B,0x02 LD A,0x20 .L6 LD L,A LD H,HIGH (IFFFONT_RAW)-0xC0 LD E,(HL) INC H LD A,(HL) ADD A,HIGH (IFFFONT_RAW)-0xC0 LD D,A LD HL,0x0008 EX DE,HL .L7 ACCEL ACCELCMD.COPY LD A,(HL) ACCEL ACCELCMD.OFF EXX LD A,IYL SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.COPY OR (HL) EX DE,HL XOR (HL) ACCEL ACCELCMD.COPY_VERT LD (BC),A ACCEL ACCELCMD.OFF EX DE,HL INC BC EXX ADD HL,DE DJNZ .L7 POP BC EX AF,AF' DEC A JR NZ,.L2 POP AF SETPORT WINSP.CPU0,,0 EI RET PositTABLeft .COUNT := 63 REPT 17 DW 10 DB .COUNT .COUNT := .COUNT + 8 ENDM .COUNT := 63 REPT 17 DW 114 DB .COUNT .COUNT := .COUNT + 8 ENDM .COUNT := 63 REPT 17 DW 218 DB .COUNT .COUNT := .COUNT + 8 ENDM PositTABRight .COUNT := 63 REPT 17 DW 330 DB .COUNT .COUNT := .COUNT + 8 ENDM .COUNT := 63 REPT 17 DW 434 DB .COUNT .COUNT := .COUNT + 8 ENDM .COUNT := 63 REPT 17 DW 538 DB .COUNT .COUNT := .COUNT + 8 ENDM ;[]----------------------------------------------------------[] SetInvert BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG) RET Z LD HL,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES) LD BC,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES) JR PrnInvert ResInvert BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG) RET Z LD HL,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES) LD BC,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES) PrnInvert LD A,(IY + PANEL.FILES_ALL) OR (IY + PANEL.FILES_ALL + 1) RET Z BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG) JP NZ,PrnTreeInv PUSH HL 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.FIRST_FILE) LD H,(IY + PANEL.FIRST_FILE + 1) LD E,(IY + PANEL.CURR_FILE) LD D,(IY + PANEL.CURR_FILE + 1) 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 ; | 0xC000 LD E,(HL) POP AF SETPORT WINSP.CPU1,,0 POP HL LD A,E OR A LD E,B LD D,H JR Z,.L2 LD E,C LD D,L .L2 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG) JR NZ,PrnInvertP LD L,(IY + PANEL.CURR_FILE) LD H,(IY + PANEL.CURR_FILE + 1) LD C,L LD B,H ADD HL,HL ADD HL,BC BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD BC,PositTABLeft JR Z,.L3 LD BC,PositTABRight .L3 ADD HL,BC PUSH DE LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) LD B,0x00 EX DE,HL POP DE LD IX,8 << 8 + 48 DEC HL DEC HL JP InvertRectan PrnInvertP LD L,(IY + PANEL.CURR_FILE) LD H,(IY + PANEL.CURR_FILE + 1) ADD HL,HL ADD HL,HL ADD HL,HL LD BC,0x003F ADD HL,BC LD C,L LD B,0x00 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG) LD HL,6 JR Z,.L1 LD HL,326 .L1 LD IX,8 << 8 + 146 JP InvertRectan PrnTreeInv PUSH HL 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.FIRST_FILE) LD H,(IY + PANEL.FIRST_FILE + 1) LD E,(IY + PANEL.CURR_FILE) LD D,(IY + PANEL.CURR_FILE + 1) ADD HL,DE ADD HL,HL ; *2 ADD HL,HL ; *4 ADD HL,HL ; *8 ADD HL,HL ; *10 SET 6,H ; | 0x4000 LD A,(HL) EX AF,AF' INC HL LD A,(HL) LD IXH,A LD IXL,0xFF .L2 INC IXL INC HL LD A,(HL) OR A JR NZ,.L2 LD A,IXL ADD A,A ADD A,A LD IXL,A POP AF SETPORT WINSP.CPU1,,0 POP HL LD A,IXH OR A LD E,B LD D,H JR Z,.L3 LD E,C LD D,L .L3 LD L,(IY+PANEL.CURR_FILE) LD H,(IY+PANEL.CURR_FILE + 1) ADD HL,HL ADD HL,HL ADD HL,HL LD BC,0x003F ADD HL,BC LD C,L LD B,0x00 BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG) LD HL,0x0012 JR Z,.L4 LD HL,0x0152 .L4 BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) JR Z,.PrTreeI EX AF,AF' OR A JR Z,.PrTreeI1 EX AF,AF' LD A,IXH OR A JR Z,.PrTreeI PUSH BC LD C,0x08 ADD HL,BC POP BC .PrTreeI EX AF,AF' .PrTreeI1 PUSH BC AND 0x7F LD C,A SLA C RL B SLA C RL B SLA C RL B ADD HL,BC BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG) JR NZ,.L5 ADD HL,BC .L5 POP BC LD IXH,0x08 JP InvertRectan