597 lines
9.4 KiB
Plaintext
597 lines
9.4 KiB
Plaintext
|
||
; 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
|