; LAST UPDATE: 07.03.2025 savelij ;[]-----------------------------------------------------------[] InitScrollBar LD C,(IX + BAR.PAGEL) LD B,(IX + BAR.PAGEH) ; Кол-во элем. на стр. LD L,C LD H,B LD E,(IX + BAR.MAXL) LD D,(IX + BAR.MAXH) ; макс.элементов LD A,D OR E JR NZ,.L1 INC DE .L1 OR A SBC HL,DE JR C,.L2 ADD HL,DE EX DE,HL .L2 PUSH DE LD E,(IX + BAR.MAXLL) LD D,(IX + BAR.MAXLH) ; Кол-во вид. элем. * размер бара CALL Mult16X16 ; DE * BC = HL + DE POP BC ; /макс.элементов CALL Divis32X16 ; HL + DE / BC = DE (HL-ост) LD A,H OR L JR Z,.L3 INC DE .L3 LD HL,0x0003 SBC HL,DE JR C,.L4 LD DE,0x0003 .L4 LD (IX + BAR.LENL),E ; = длина бара LD (IX + BAR.LENH),D ; = длина бара RET PrnHScrBar PUSH IY GETPORT WINSP.Y_PORT PUSH AF GETPORT WINSP.CPU1 LD IYL,A LD L,(IX + BAR.FIRSTL) ; FirstFile LD H,(IX + BAR.FIRSTH) LD E,(IX + BAR.PAGEL) LD D,(IX + BAR.PAGEH) LD C,(IX + BAR.MAXL) ; EquipFiles LD B,(IX + BAR.MAXH) LD A,B OR C JR NZ,.L1 INC BC .L1 PUSH BC PUSH HL ADD HL,DE SBC HL,BC POP HL JR C,.L2 JR Z,.L2 LD L,C LD H,B SBC HL,DE JR NC,.L2 LD HL,0x0000 .L2 EX DE,HL LD C,(IX + BAR.MAXLL) LD B,(IX + BAR.MAXLH) CALL Mult16X16 POP BC CALL Divis32X16 LD A,D OR E JR Z,.L3 PUSH DE SRL D RR E JR NC,.L4 INC DE .L4 LD L,(IX + BAR.XL) LD H,(IX + BAR.XH) SRL H RR L SET 6,H LD A,(IX + BAR.YL) LD C,A LD B,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x08 ACCEL ACCELCMD.OFF .L5 LD A,C SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),B ACCEL ACCELCMD.OFF INC HL DEC DE LD A,D OR E JR NZ,.L5 LD A,IYL SETPORT WINSP.CPU1,,0 EI POP DE .L3 PUSH DE LD L,(IX + BAR.XL) LD H,(IX + BAR.XH) ADD HL,DE LD E,(IX + BAR.LEFTL) LD D,(IX + BAR.LEFTH) LD A,D OR E JR Z,.L6 EX DE,HL SETPORT WINSP.Y_PORT,0xC0 LD (HL),E INC HL LD (HL),D EX DE,HL .L6 PUSH HL SRL H RR L SET 6,H LD A,(IX + BAR.YL) LD C,A LD E,(IX + BAR.LENL) LD D,(IX + BAR.LENH) LD A,D OR A JR NZ,.L7 LD A,E CP 0x06 JR NC,.L7 LD E,0x06 .L7 SRL D RR E JR C,.L8 DEC DE .L8 DEC DE SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x06 ACCEL ACCELCMD.OFF LD B,COLORP.WHITE + COLORI.WHITE;0xFF LD A,C SETPORT WINSP.Y_PORT,,0 LD (HL),B INC A SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),B ACCEL ACCELCMD.OFF LD (HL),0xF7 INC HL .L9 LD A,C SETPORT WINSP.Y_PORT,,0 LD (HL),B INC A SETPORT WINSP.Y_PORT,,0 LD A,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 ACCEL ACCELCMD.FILL_VERT LD (HL),A ACCEL ACCELCMD.OFF LD (HL),COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 INC HL DEC DE LD A,D OR E JR NZ,.L9 LD A,C SETPORT WINSP.Y_PORT,,0 LD (HL),0xF7 INC A SETPORT WINSP.Y_PORT,,0 LD A,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 ACCEL ACCELCMD.FILL_VERT LD (HL),A ACCEL ACCELCMD.OFF LD (HL),A INC HL EX DE,HL LD A,IYL SETPORT WINSP.CPU1,,0 EI POP HL LD C,(IX + BAR.LENL) LD B,(IX + BAR.LENH) PUSH BC ADD HL,BC LD C,(IX+BAR.RIGHTL) LD B,(IX+BAR.RIGHTH) LD A,B OR C JR Z,.L10 SETPORT WINSP.Y_PORT,0xC0 LD A,L LD (BC),A INC BC LD A,H LD (BC),A .L10 POP BC LD L,(IX + BAR.MAXLL) LD H,(IX + BAR.MAXLH) OR A SBC HL,BC POP BC JR Z,.L11 JR C,.L11 OR A SBC HL,BC JR Z,.L11 JR C,.L11 EX DE,HL SRL D RR E JR Z,.L11 LD A,(IX + BAR.YL) LD C,A LD B,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x08 ACCEL ACCELCMD.OFF .L12 LD A,C SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),B ACCEL ACCELCMD.OFF INC HL DEC DE LD A,D OR E JR NZ,.L12 LD A,IYL SETPORT WINSP.CPU1,,0 EI .L11 POP AF SETPORT WINSP.Y_PORT,,0 POP IY RET PrnVScrBar PUSH IY GETPORT WINSP.Y_PORT PUSH AF GETPORT WINSP.CPU1 LD IYH,A LD L,(IX + BAR.FIRSTL) ; FirstFile LD H,(IX + BAR.FIRSTH) LD E,(IX + BAR.PAGEL) LD D,(IX + BAR.PAGEH) LD C,(IX + BAR.MAXL) ; EquipFiles LD B,(IX + BAR.MAXH) LD A,B OR C JR NZ,.L1 INC BC .L1 PUSH BC PUSH HL ADD HL,DE SBC HL,BC POP HL JR C,.L2 JR Z,.L2 LD L,C LD H,B SBC HL,DE JR NC,.L2 LD HL,0x0000 .L2 EX DE,HL LD C,(IX + BAR.MAXLL) LD B,(IX + BAR.MAXLH) CALL Mult16X16 POP BC CALL Divis32X16 LD A,(IX + BAR.YL) LD IYL,A LD A,D OR E JR Z,.L3 PUSH DE LD A,E LD (.L4),A LD L,(IX + BAR.XL) LD H,(IX + BAR.XH) SRL H RR L SET 6,H LD D,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x00 .L4 EQU $-1 ACCEL ACCELCMD.OFF LD B,0x08 .L5 LD A,IYL SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),D ACCEL ACCELCMD.OFF INC HL DJNZ .L5 LD A,IYL ADD A,E LD IYL,A LD A,IYH SETPORT WINSP.CPU1,,0 EI POP DE .L3 PUSH DE LD L,(IX + BAR.YL) LD H,(IX + BAR.YH) ADD HL,DE LD E,(IX + BAR.LEFTL) LD D,(IX + BAR.LEFTH) LD A,D OR E JR Z,.L6 EX DE,HL SETPORT WINSP.Y_PORT,0xC0 LD (HL),E INC HL LD (HL),D EX DE,HL .L6 PUSH HL LD L,(IX + BAR.XL) LD H,(IX + BAR.XH) SRL H RR L SET 6,H LD A,(IX + BAR.LENL) LD C,A SUB 0x02 LD (.L7),A SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x00 .L7 EQU $-1 ACCEL ACCELCMD.OFF LD DE,(COLORP.WHITE + COLORI.WHITE) << 8 + COLORP.HIGHGRAY + COLORI.HIGHGRAY;0xFF88 LD A,IYL SETPORT WINSP.Y_PORT,,0 LD (HL),D INC A SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),D ACCEL ACCELCMD.OFF LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7 INC HL LD B,0x06 .L8 LD A,IYL SETPORT WINSP.Y_PORT,,0 LD (HL),D INC A SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),E ACCEL ACCELCMD.OFF LD (HL),COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 INC HL DJNZ .L8 LD A,IYL SETPORT WINSP.Y_PORT,,0 LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7 INC A SETPORT WINSP.Y_PORT,,0 LD A,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77 ACCEL ACCELCMD.FILL_VERT LD (HL),A ACCEL ACCELCMD.OFF LD (HL),A INC HL LD A,IYL ADD A,C LD IYL,A LD A,IYH SETPORT WINSP.CPU1,,0 EI POP HL LD C,(IX + BAR.LENL) LD B,(IX + BAR.LENH) PUSH BC ADD HL,BC LD C,(IX + BAR.RIGHTL) LD B,(IX + BAR.RIGHTH) LD A,B OR C JR Z,.L9 SETPORT WINSP.Y_PORT,0xC0 LD A,L LD (BC),A INC BC LD A,H LD (BC),A .L9 POP BC LD L,(IX + BAR.MAXLL) LD H,(IX + BAR.MAXLH) OR A SBC HL,BC POP BC JR Z,.L10 JR C,.L10 OR A SBC HL,BC JR Z,.L10 JR C,.L10 LD A,L LD (.L11),A LD L,(IX+BAR.XL) LD H,(IX+BAR.XH) SRL H RR L SET 6,H LD D,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88 SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x00 .L11 EQU $-1 ACCEL ACCELCMD.OFF LD B,0x08 .L12 LD A,IYL SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),D ACCEL ACCELCMD.OFF INC HL DJNZ .L12 LD A,IYH SETPORT WINSP.CPU1,,0 EI .L10 POP AF SETPORT WINSP.Y_PORT,,0 POP IY RET ;[]-----------------------------------------------------------[] InitProcess SUB A LD (IX + PROC.CURL1),A LD (IX + PROC.CURH1),A LD (IX + PROC.CURL2),A LD (IX + PROC.CURH2),A LD (IX + PROC.CORRL),A LD (IX + PROC.CORRH),A LD C,(IX + PROC.MAXLL) ; Макс/макс.длину процеса LD B,(IX + PROC.MAXLH) LD E,(IX + PROC.MAXL1) LD D,(IX + PROC.MAXH1) LD L,(IX + PROC.MAXL2) LD H,(IX + PROC.MAXH2) CALL Divis32X16 ; HL + DE / BC = DE (HL-ост) LD A,H OR L JR Z,.L2 INC DE ; = коэффициент .L2 LD HL,9 OR A SBC HL,DE JR C,.L1 LD A,(IX + PROC.MAXL2) OR (IX + PROC.MAXH2) JR NZ,.L1 LD E,(IX + PROC.MAXL1) LD D,(IX + PROC.MAXH1) LD BC,1000 LD (IX + PROC.CORRL),C LD (IX + PROC.CORRH),B CALL Mult16X16 LD C,(IX + PROC.MAXLL) ; Макс/макс.длину процеса LD B,(IX + PROC.MAXLH) CALL Divis32X16 ; HL + DE / BC = DE (HL-ост) .L1 LD (IX + PROC.COEFL),E LD (IX + PROC.COEFH),D RET PrnProcess PUSH IY GETPORT WINSP.Y_PORT PUSH AF GETPORT WINSP.CPU1 LD IYL,A LD E,(IX + PROC.CURL1) LD D,(IX + PROC.CURH1) LD L,(IX + PROC.CURL2) LD H,(IX + PROC.CURH2) LD A,(IX + PROC.CORRL) OR (IX + PROC.CORRH) JR Z,.L1 LD C,(IX + PROC.CORRL) LD B,(IX + PROC.CORRH) CALL Mult16X16 .L1 LD C,(IX + PROC.COEFL) LD B,(IX + PROC.COEFH) CALL Divis32X16 LD L,(IX + PROC.XL) LD H,(IX + PROC.XH) SRL H RR L SET 6,H LD A,D OR E JR Z,.L2 PUSH DE PUSH HL LD L,(IX + PROC.MAXLL) LD H,(IX + PROC.MAXLH) OR A SBC HL,DE JR NC,.L3 ADD HL,DE EX DE,HL .L3 POP HL SRL D RR E JR NC,.L4 INC DE .L4 LD A,(IX + PROC.YL) LD C,A LD A,(IX + PROC.COLOR) AND 0xF0 LD B,A RRCA RRCA RRCA RRCA OR B LD B,A SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x0A ACCEL ACCELCMD.OFF .L5 LD A,C SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),B ACCEL ACCELCMD.OFF INC HL DEC DE LD A,D OR E JR NZ,.L5 LD A,IYL SETPORT WINSP.CPU1,,0 EI POP DE .L2 PUSH HL LD L,(IX + PROC.MAXLL) LD H,(IX + PROC.MAXLH) OR A SBC HL,DE EX DE,HL POP HL JR Z,.L6 JR C,.L6 SRL D RR E JR NC,.L7 INC DE .L7 LD A,(IX + PROC.YL) LD C,A LD A,(IX + PROC.COLOR) AND 0x0F LD B,A RLCA RLCA RLCA RLCA OR B LD B,A SETPORT WINSP.CPU1,0x50 DI ACCEL ACCELCMD.SET_BUFFER LD A,0x0A ACCEL ACCELCMD.OFF .L8 LD A,C SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL_VERT LD (HL),B ACCEL ACCELCMD.OFF INC HL DEC DE LD A,D OR E JR NZ,.L8 LD A,IYL SETPORT WINSP.CPU1,,0 EI .L6 POP AF SETPORT WINSP.Y_PORT,,0 POP IY RET