1125 lines
20 KiB
Plaintext
1125 lines
20 KiB
Plaintext
|
||
; LAST UPDATE: 30.03.2025 savelij
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;<3B>à®æ¥¤ãà ®âç¨áª¨ 0 íªà
|
||
;<3B> ¢å®¤: A - 梥⠮âç¨á⪨ (00-0Fh)
|
||
ClearScreen AND 0x0F
|
||
LD E,A
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR E
|
||
LD E,A
|
||
GETPORT WINSP.Y_PORT
|
||
LD C,A
|
||
GETPORT WINSP.CPU1
|
||
LD B,A
|
||
PUSH BC
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD HL,0x4000
|
||
LD BC,320
|
||
DI
|
||
EXX
|
||
SPMOUSE MOUSEF.REFRESH
|
||
EXX
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
InScrLp
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
INC HL
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,InScrLp
|
||
EI
|
||
POP BC
|
||
LD A,B
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; <20>à®æ¥¤ãà ¢ë¢®¤ ®ª® £à ä¨ç¥áª¨© íªà 640x256x16 ;
|
||
;[]----------------------------------------------------------[]
|
||
MakeWindow: EX (SP),IY
|
||
PUSH IX
|
||
PUSH HL
|
||
PUSH DE
|
||
PUSH BC
|
||
PUSH AF
|
||
GETPORT WINSP.Y_PORT ; ‘®åà 塞 Y ¯®àâ
|
||
PUSH AF
|
||
LD A,(IY+0x00)
|
||
LD (MakeWindow.Type),A
|
||
BIT 7,A
|
||
JR Z,.L4
|
||
INC IY
|
||
LD HL,0x0000
|
||
LD (MakeWindow.PositX),HL
|
||
LD (MakeWindow.PositY),HL
|
||
LD (MakeWindow.LenX),HL
|
||
LD (MakeWindow.LenY),HL
|
||
JR .L2
|
||
|
||
.L4 CP 0x7F
|
||
JR Z,.L2
|
||
LD L,(IY+0x01) ; Š®®à¤¨ â X
|
||
LD H,(IY+0x02)
|
||
SRL H
|
||
RR L
|
||
LD (MakeWindow.PositX),HL
|
||
LD L,(IY+0x03) ; Š®®à¤¨ â Y
|
||
LD H,(IY+0x04)
|
||
LD (MakeWindow.PositY),HL
|
||
LD L,(IY+0x05) ; H „«¨ ®ª ¯® X
|
||
LD H,(IY+0x06)
|
||
SRL H
|
||
RR L
|
||
LD (MakeWindow.LenX),HL
|
||
LD L,(IY+0x07) ; V „«¨ ®ª ¯® Y
|
||
LD H,(IY+0x08)
|
||
LD (MakeWindow.LenY),HL
|
||
LD A,(MakeWindow.Type)
|
||
DEC A
|
||
JR NZ,.L3
|
||
LD HL,MakeWindow.Buffer
|
||
LD A,(MakeWindow.Open)
|
||
ADD A,A
|
||
LD C,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,C
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,.L1
|
||
INC H
|
||
.L1 LD DE,(MakeWindow.PositX)
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
LD DE,(MakeWindow.PositY)
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
LD DE,(MakeWindow.LenX)
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
LD DE,(MakeWindow.LenY)
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
LD DE,(MakeWindow.Free)
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
.L3 LD DE,0x0009
|
||
ADD IY,DE ; ޝ¨á ⥫ì ç «® ¯®¤®¡'¥ªâ®¢
|
||
LD A,(MakeWindow.Type)
|
||
OR A
|
||
CALL NZ,StoreWindow
|
||
CALL PutRectan ; —¥à⨬ ¯àאַ㣮«ì¨ª ®ª
|
||
.L2 LD HL,.L2
|
||
PUSH HL
|
||
LD A,(IY+0x00) ; ⥪ã騩 ¯®¤®¡'¥ªâ ®ª
|
||
INC IY
|
||
CP WINSUBOBJ.TEXT;0x01 ; ⥪á⮢ ï áâப
|
||
JP Z,PutTxtLine
|
||
CP WINSUBOBJ.FILL;0x02 ; ¬¥áâ® ¤«ï § £®«®¢ª
|
||
JP Z,PutHeadPlc
|
||
CP WINSUBOBJ.BORDER;0x03 ; 㣫㡫¥¨¥ ¢ ®ª¥
|
||
JP Z,PutDRectan
|
||
CP WINSUBOBJ.BUTTON;0x04 ; ª®¯ª
|
||
JP Z,PutURectan
|
||
CP WINSUBOBJ.BUTTONTEXT;0x05 ; ª®¯ª á ⥪á⮬
|
||
JP Z,PutButton
|
||
CP WINSUBOBJ.HORIZLINE;0x06 ; £®à¨§®â «ì ï «¨¨ï
|
||
JP Z,PutHorizLine
|
||
CP WINSUBOBJ.VERTICLINE;0x07 ; ¢¥à⨪ «ì ï «¨¨ï
|
||
JP Z,PutVertLine
|
||
CP WINSUBOBJ.ICONLEFTARROW;0x08 ; ¨ª®ª "áâ५ª ¢«¥¢®"
|
||
JP Z,PutSBleft
|
||
CP WINSUBOBJ.ICONRIGHTARROW;0x09 ; ¨ª®ª "áâ५ª ¢¯à ¢®"
|
||
JP Z,PutSBright
|
||
CP WINSUBOBJ.ICONUPARROW;0x0A ; ¨ª®ª "áâ५ª ¢¢¥àå"
|
||
JP Z,PutSBup
|
||
CP WINSUBOBJ.ICONDOWNARROW;0x0B ; ¨ª®ª "áâ५ª ¢¨§"
|
||
JP Z,PutSBdown
|
||
CP WINSUBOBJ.RESTOREWIN;0x7F ; ¢®ááâ ®¢«¥¨¥ ç á⨠íªà
|
||
JP Z,RestoreWindow
|
||
CP WINSUBOBJ.ADRTEXT
|
||
JP Z,PutAdrTxtLine
|
||
POP HL
|
||
POP AF
|
||
SETPORT WINSP.Y_PORT,,0 ; ¢®ááâ. Y port
|
||
POP AF
|
||
POP BC
|
||
POP DE
|
||
POP HL
|
||
POP IX
|
||
EX (SP),IY
|
||
RET
|
||
|
||
;--------------------------------------------------------------
|
||
; Ž¡« áâì ¤ ëå ®ª
|
||
.PositX DEFW 0x0000 ; ¤à¥á X ª®®à¤¨ âë ®ª
|
||
.PositY DEFW 0x0000 ; Y ª®®à¤¨ â ®ª
|
||
.LenX DEFW 0x0000 ; ¤«¨ ®ª X/2
|
||
.LenY DEFW 0x0000 ; ¤«¨ ®ª Y
|
||
.Free DEFW 0x0000
|
||
.Open DEFB 0x00 ; Š®«-¢® ®âªàëâëå ®ª®
|
||
.Type DEFB 0x00
|
||
.Buffer DUPL 0x40,0
|
||
|
||
;--------------------------------------------------------------
|
||
; <20>à®æ¥¤ãà á®åà ¥¨ï ¯àאַ㣮«ì®© ¯«®áª®á⨠¢ ¡ãä¥à
|
||
StoreWindow DI
|
||
PUSH IY
|
||
SPMOUSE MOUSEF.REFRESH
|
||
POP IY
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD HL,(MakeWindow.Free)
|
||
LD A,H
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
EXX
|
||
LD HL,RAMPAGES.BuffPg1
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,.L1
|
||
INC H
|
||
.L1 LD A,(HL)
|
||
SETPORT WINSP.CPU3,,0
|
||
EXX
|
||
LD A,H
|
||
OR 0xC0
|
||
LD H,A
|
||
LD DE,(MakeWindow.PositX)
|
||
SET 6,D
|
||
LD A,(MakeWindow.PositY)
|
||
LD IXH,A
|
||
LD A,(MakeWindow.LenY)
|
||
LD IXL,A
|
||
LD (.SavLen1),A
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.SavLen1 EQU $-1
|
||
ACCEL ACCELCMD.OFF
|
||
LD BC,(MakeWindow.LenX)
|
||
.SavRect PUSH BC
|
||
LD B,0x00
|
||
LD C,IXL
|
||
PUSH HL
|
||
ADC HL,BC
|
||
POP HL
|
||
JR Z,.L2
|
||
JR NC,.SavRec1
|
||
.L2 LD HL,0xC000
|
||
EXX
|
||
INC HL
|
||
LD A,(HL)
|
||
SETPORT WINSP.CPU3,,0
|
||
EXX
|
||
.SavRec1 LD A,IXH
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.COPY_VERT
|
||
LD A,(DE)
|
||
ACCEL ACCELCMD.COPY
|
||
LD (HL),A
|
||
ACCEL ACCELCMD.OFF
|
||
ADD HL,BC
|
||
POP BC
|
||
INC DE
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,.SavRect
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,H
|
||
AND 0x3F
|
||
LD H,A
|
||
EXX
|
||
LD A,L
|
||
SUB LOW (RAMPAGES.BuffPg1)
|
||
EXX
|
||
RRCA
|
||
RRCA
|
||
OR H
|
||
LD H,A
|
||
LD (MakeWindow.Free),HL
|
||
LD HL,MakeWindow.Open
|
||
INC (HL)
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; <20>à®æ¥¤ãà ¢®ááâ ®¢«¥¨ï ¯àאַ㣮«ì®© ¯«®áª®áâ¨
|
||
RestoreWindow LD HL,MakeWindow.Open
|
||
LD A,(HL)
|
||
OR A
|
||
RET Z
|
||
DEC (HL)
|
||
HALT
|
||
DI
|
||
PUSH IY
|
||
SPMOUSE MOUSEF.REFRESH
|
||
POP IY
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD HL,MakeWindow.Buffer
|
||
LD A,(MakeWindow.Open)
|
||
ADD A,A
|
||
LD C,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,C
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,.L1
|
||
INC H
|
||
.L1 LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
SET 6,D
|
||
LD A,(HL)
|
||
INC HL
|
||
INC HL
|
||
LD IXH,A
|
||
LD C,(HL)
|
||
INC HL
|
||
LD B,(HL)
|
||
INC HL
|
||
LD A,(HL)
|
||
INC HL
|
||
INC HL
|
||
LD (.RstLen1),A
|
||
LD IXL,A
|
||
LD A,(HL)
|
||
INC HL
|
||
LD H,(HL)
|
||
LD L,A
|
||
LD (MakeWindow.Free),HL
|
||
LD A,H
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
EXX
|
||
LD HL,RAMPAGES.BuffPg1
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,.L2
|
||
INC H
|
||
.L2 LD A,(HL)
|
||
SETPORT WINSP.CPU3,,0
|
||
EXX
|
||
LD A,H
|
||
OR 0xC0
|
||
LD H,A
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.RstLen1 EQU $-1
|
||
ACCEL ACCELCMD.OFF
|
||
.RstRect PUSH BC
|
||
LD B,0x00
|
||
LD C,IXL
|
||
PUSH HL
|
||
ADC HL,BC
|
||
POP HL
|
||
JR Z,.L3
|
||
JR NC,.RstRec1
|
||
.L3 LD HL,0xC000
|
||
EXX
|
||
INC HL
|
||
LD A,(HL)
|
||
SETPORT WINSP.CPU3,,0
|
||
EXX
|
||
.RstRec1
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,IXH
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.COPY_VERT
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
ADD HL,BC
|
||
POP BC
|
||
INC DE
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,.RstRect
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
; <20>à®æ¥¤ãà ç¥àç¥¨ï ¯àאַ㣮«ì®© ¯«®é ¤¨ ®ª
|
||
PutRectan HALT
|
||
DI
|
||
PUSH IY
|
||
SPMOUSE MOUSEF.REFRESH
|
||
POP IY
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD HL,(MakeWindow.PositX) ; ¯®§. ®ª
|
||
SET 6,H
|
||
LD A,(MakeWindow.LenY) ; ¤«¨ ®ª -(¯®¤á¢¥âª +â¥ì)
|
||
SUB 0x02
|
||
LD (.TmpLen1),A
|
||
LD A,(MakeWindow.PositY)
|
||
LD D,A
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.WHITE + COLORI.WHITE;0xFF
|
||
LD (HL),E
|
||
INC A
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD BC,(MakeWindow.LenX)
|
||
DEC BC
|
||
DEC BC
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen1 EQU $-1
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7
|
||
INC HL
|
||
LD E,COLORP.HIGHGRAY + COLORI.HIGHGRAY;0x88
|
||
.PtRect1 LD A,D
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD (HL),COLORP.WHITE + COLORI.WHITE;0xFF
|
||
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
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,.PtRect1
|
||
LD A,D
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7
|
||
INC A
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD (HL),E
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
; <20>¥ç âì ⥪á⮢®© áâப¨ ¯® 㪠§ ®¬ã ¤à¥áã ¤à¥áã
|
||
PutAdrTxtLine LD HL,(MakeWindow.PositX)
|
||
SLA L
|
||
RL H
|
||
LD E,(IY+0x00) ; Xpos
|
||
INC IY
|
||
LD D,(IY+0x00)
|
||
INC IY
|
||
ADD HL,DE
|
||
EX DE,HL
|
||
LD HL,(MakeWindow.PositY)
|
||
LD C,(IY+0x00) ; Ypos
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
ADD HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
LD A,(IY+0x00) ; Color
|
||
INC IY
|
||
LD L,(IY+0)
|
||
INC IY
|
||
LD H,(IY+0) ; €¤à¥á ⥪áâ
|
||
INC IY
|
||
PUSH IY
|
||
LD A,H
|
||
OR L
|
||
CALL NZ,PrnTxtLnIFF ; ¯¥ç â âì ¥á«¨ ¤à¥á ¥ 0
|
||
POP IY
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutTxtLine LD HL,(MakeWindow.PositX)
|
||
SLA L
|
||
RL H
|
||
LD E,(IY+0x00) ; Xpos
|
||
INC IY
|
||
LD D,(IY+0x00)
|
||
INC IY
|
||
ADD HL,DE
|
||
EX DE,HL
|
||
LD HL,(MakeWindow.PositY)
|
||
LD C,(IY+0x00) ; Ypos
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
ADD HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
LD A,(IY+0x00) ; Color
|
||
INC IY
|
||
PUSH IY
|
||
POP HL
|
||
CALL PrnTxtLnIFF
|
||
PUSH HL
|
||
POP IY
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutHeadPlc DI
|
||
PUSH IY
|
||
SPMOUSE MOUSEF.REFRESH
|
||
POP IY
|
||
LD HL,(MakeWindow.PositX)
|
||
SET 6,H
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
ADD HL,BC
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
LD A,(MakeWindow.PositY)
|
||
ADD A,C
|
||
LD IXL,A
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
LD A,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
LD (.TmpLen2),A
|
||
LD A,(IY+0x00)
|
||
AND 0x0F
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR (IY+0x00)
|
||
LD D,A
|
||
INC IY
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen2 EQU $-1
|
||
ACCEL ACCELCMD.OFF
|
||
.PtHead1 LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),D
|
||
ACCEL ACCELCMD.OFF
|
||
INC HL
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,.PtHead1
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutDRectan LD HL,(MakeWindow.PositX)
|
||
SET 6,H
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
ADD HL,BC
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
LD A,(MakeWindow.PositY)
|
||
ADD A,C
|
||
LD IXL,A
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
DEC BC
|
||
LD A,C
|
||
DEC A
|
||
LD (.TmpLen4),A
|
||
LD A,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
SUB 0x02
|
||
LD (.TmpLen3),A
|
||
ADD A,IXL
|
||
INC A
|
||
LD IXH,A
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen3 EQU $-1
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77
|
||
LD (HL),E
|
||
INC A
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD (HL),COLORP.BLACKGRAY + COLORI.WHITE;0x7F
|
||
PUSH HL
|
||
ADD HL,BC
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.WHITE + COLORI.WHITE;0xFF
|
||
LD (HL),E
|
||
INC A
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD (HL),E
|
||
POP HL
|
||
INC HL
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen4 EQU $-1
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,IXH
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.WHITE + COLORI.WHITE;0xFF
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutURectan LD HL,(MakeWindow.PositX)
|
||
SET 6,H ; | 0x4000
|
||
LD C,(IY+0x00) ; 00
|
||
INC IY ; 0->1
|
||
LD B,(IY+0x00) ; 01
|
||
INC IY ; 1->2
|
||
SRL B
|
||
RR C
|
||
ADD HL,BC
|
||
LD C,(IY+0x00) ; 02
|
||
INC IY ; 2->3
|
||
INC IY ; 3->4
|
||
LD A,(MakeWindow.PositY)
|
||
ADD A,C
|
||
LD IXL,A
|
||
LD C,(IY+0x00) ; 04
|
||
INC IY ; 4->5
|
||
LD B,(IY+0x00) ; 05
|
||
INC IY ; 5->6
|
||
SRL B
|
||
RR C
|
||
DEC BC
|
||
LD A,C
|
||
DEC A
|
||
LD (.TmpLen6),A
|
||
LD A,(IY+0x00) ; 06
|
||
INC IY ; 6->7
|
||
INC IY ; 7->8
|
||
SUB 0x02
|
||
LD (.TmpLen5),A
|
||
ADD A,IXL
|
||
INC A
|
||
LD IXH,A
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen5 EQU $-1
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.WHITE + COLORI.WHITE;0xFF
|
||
LD (HL),E
|
||
INC A
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD (HL),COLORP.WHITE + COLORI.BLACKGRAY;0xF7
|
||
PUSH HL
|
||
ADD HL,BC
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77
|
||
LD (HL),E
|
||
INC A
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD (HL),E
|
||
POP HL
|
||
INC HL
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.WHITE + COLORI.WHITE;0xFF
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen6 EQU $-1
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,IXH
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutButton LD HL,(MakeWindow.PositX)
|
||
SLA L
|
||
RL H
|
||
LD E,(IY+0x00) ; Xpos
|
||
LD D,(IY+0x01)
|
||
ADD HL,DE
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
EX DE,HL
|
||
LD HL,(MakeWindow.PositY)
|
||
LD C,(IY+0x02) ; Ypos
|
||
LD B,(IY+0x03)
|
||
ADD HL,BC
|
||
INC HL
|
||
LD C,L
|
||
LD B,H
|
||
PUSH DE
|
||
PUSH BC
|
||
CALL PutURectan
|
||
POP BC
|
||
POP DE
|
||
LD A,(IY+0x00) ; Color
|
||
INC IY
|
||
PUSH IY
|
||
POP HL
|
||
CALL PrnTxtLnIFF
|
||
PUSH HL
|
||
POP IY
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutHorizLine LD HL,(MakeWindow.PositX)
|
||
SET 6,H
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
ADD HL,BC
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
LD A,(MakeWindow.PositY)
|
||
ADD A,C
|
||
LD IXL,A
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
LD E,COLORP.BLACKGRAY + COLORI.BLACKGRAY;0x77
|
||
PUSH HL
|
||
CALL .HorizLn
|
||
POP HL
|
||
INC IXL
|
||
LD E,COLORP.WHITE + COLORI.WHITE;0xFF
|
||
.HorizLn DI
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD A,B
|
||
OR A
|
||
JR Z,.HorLn1
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
INC H
|
||
.HorLn1 LD A,C
|
||
LD (.TmpLen8),A
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen8 EQU $-1
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutVertLine LD HL,(MakeWindow.PositX)
|
||
SET 6,H
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
ADD HL,BC
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
LD A,(MakeWindow.PositY)
|
||
ADD A,C
|
||
LD IXL,A
|
||
LD A,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
LD (.TmpLen9),A
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
DI
|
||
LD DE,(COLORP.BLACKGRAY + COLORI.BLACKGRAY) << 8 + COLORP.WHITE + COLORI.WHITE;0x77FF
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.TmpLen9 EQU $-1
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),D
|
||
ACCEL ACCELCMD.OFF
|
||
INC HL
|
||
LD A,IXL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),E
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
;[]===========================================================[]
|
||
PutSBleft LD HL,SBleft
|
||
JR PutSButton
|
||
|
||
PutSBright LD HL,SBright
|
||
JR PutSButton
|
||
|
||
PutSBup LD HL,SBup
|
||
JR PutSButton
|
||
|
||
PutSBdown LD HL,SBdown
|
||
PutSButton EX DE,HL
|
||
LD HL,(MakeWindow.PositX)
|
||
SET 6,H
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
LD B,(IY+0x00)
|
||
INC IY
|
||
SRL B
|
||
RR C
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
LD C,(IY+0x00)
|
||
INC IY
|
||
INC IY
|
||
LD A,(MakeWindow.PositY)
|
||
ADD A,C
|
||
LD C,A
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x08
|
||
ACCEL ACCELCMD.OFF
|
||
LD B,0x08
|
||
PutSBlp PUSH BC
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
LD BC,0x0008
|
||
ADD HL,BC
|
||
POP BC
|
||
INC C
|
||
DJNZ PutSBlp
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
; á¯à ©â¨ª ¤«ï áªà®««¡ à "áâ५ª ¢«¥¢®"
|
||
SBleft
|
||
; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x88,0x80,0x00,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x80,0x00,0x00,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x00,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x80,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77
|
||
DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77 ; 0
|
||
DB 0xFF,0x88,0x88,0x88,0x80,0x00,0x88,0x77 ; 1
|
||
DB 0xFF,0x88,0x88,0x80,0x00,0x08,0x88,0x77 ; 2
|
||
DB 0xFF,0x88,0x80,0x00,0x00,0x88,0x88,0x77 ; 3
|
||
DB 0xFF,0x88,0x80,0x00,0x00,0x88,0x88,0x77 ; 4
|
||
DB 0xFF,0x88,0x88,0x80,0x00,0x08,0x88,0x77 ; 5
|
||
DB 0xFF,0x88,0x88,0x88,0x80,0x00,0x88,0x77 ; 6
|
||
DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7
|
||
|
||
; á¯à ©â¨ª ¤«ï áªà®««¡ à "áâ५ª ¢¯à ¢®"
|
||
SBright
|
||
; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x08,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x00,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x00,0x08,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x00,0x08,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x00,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x08,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77
|
||
DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0
|
||
DB 0xFF,0x88,0x00,0x08,0x88,0x88,0x88,0x77 ; 1
|
||
DB 0xFF,0x88,0x80,0x00,0x08,0x88,0x88,0x77 ; 2
|
||
DB 0xFF,0x88,0x88,0x00,0x00,0x08,0x88,0x77 ; 3
|
||
DB 0xFF,0x88,0x88,0x00,0x00,0x08,0x88,0x77 ; 4
|
||
DB 0xFF,0x88,0x80,0x00,0x08,0x88,0x88,0x77 ; 5
|
||
DB 0xFF,0x88,0x00,0x08,0x88,0x88,0x88,0x77 ; 6
|
||
DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7
|
||
|
||
; á¯à ©â¨ª ¤«ï áªà®««¡ à "áâ५ª ¢¢¥àå"
|
||
SBup
|
||
; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x00,0x00,0x00,0x00,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77
|
||
DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0
|
||
DB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 ; 1
|
||
DB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77 ; 2
|
||
DB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77 ; 3
|
||
DB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77 ; 4
|
||
DB 0xFF,0x88,0x00,0x08,0x80,0x00,0x88,0x77 ; 5
|
||
DB 0xFF,0x88,0x00,0x88,0x88,0x00,0x88,0x77 ; 6
|
||
DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7
|
||
|
||
; á¯à ©â¨ª ¤«ï áªà®««¡ à "áâ५ª ¢¨§"
|
||
SBdown
|
||
; DEFB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x00,0x00,0x00,0x00,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77
|
||
; DEFB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77
|
||
DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0
|
||
DB 0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x77 ; 1
|
||
DB 0xFF,0x88,0x00,0x88,0x88,0x00,0x88,0x77 ; 2
|
||
DB 0xFF,0x88,0x00,0x08,0x80,0x00,0x88,0x77 ; 3
|
||
DB 0xFF,0x88,0x80,0x00,0x00,0x08,0x88,0x77 ; 4
|
||
DB 0xFF,0x88,0x88,0x00,0x00,0x88,0x88,0x77 ; 5
|
||
DB 0xFF,0x88,0x88,0x80,0x08,0x88,0x88,0x77 ; 6
|
||
DB 0xFF,0x77,0x77,0x77,0x77,0x77,0x77,0x77 ; 7
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; <20>à®æ¥¤ãà ¨¢¥àâ¨à®¢ ¨ï ¯àאַ㣮«ì®© ¯«®áª®áâ¨
|
||
; <20> ¢å®¤:
|
||
; HL - X ª®®à¤¨ â
|
||
; BC - Y ª®®à¤¨ â
|
||
; HX - ¤«¨ Y
|
||
; LX - ¤«¨ X
|
||
; D - ⥪ã騩 梥â
|
||
; E - ã¦ë© 梥â
|
||
InvertRectan PUSH IY
|
||
GETPORT WINSP.Y_PORT ; ‘®åà 塞 Y ¯®àâ
|
||
PUSH AF
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD IYL,C
|
||
LD C,IXH
|
||
LD B,IXL
|
||
SRL H
|
||
RR L
|
||
SET 6,H
|
||
LD IXL,E
|
||
LD IXH,D
|
||
LD A,D
|
||
AND 0xF0
|
||
LD IYH,A
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
OR IYH
|
||
LD D,A
|
||
AND 0x0F
|
||
LD IYH,A
|
||
LD E,IXH
|
||
LD A,E
|
||
AND 0x0F
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR IYH
|
||
LD IXH,A
|
||
EXX
|
||
LD A,IXL
|
||
AND 0xF0
|
||
LD IYH,A
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
OR IYH
|
||
LD D,A
|
||
AND 0x0F
|
||
LD IYH,A
|
||
LD E,IXL
|
||
LD A,E
|
||
AND 0x0F
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR IYH
|
||
LD B,A
|
||
AND 0xF0
|
||
LD IYH,A
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
OR IYH
|
||
LD C,A
|
||
EXX
|
||
.PrnInvLp LD A,IYL
|
||
SETPORT WINSP.Y_PORT,,0
|
||
PUSH HL
|
||
EXX
|
||
POP HL
|
||
EXX
|
||
PUSH HL
|
||
PUSH BC
|
||
CALL InvLnLp
|
||
POP BC
|
||
POP HL
|
||
INC IYL
|
||
DEC C
|
||
JR NZ,.PrnInvLp
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
POP AF
|
||
SETPORT WINSP.Y_PORT,,0
|
||
POP IY
|
||
RET
|
||
|
||
InvLnLp LD A,(HL)
|
||
INC HL
|
||
CP D
|
||
JR NZ,CmpInv2
|
||
EXX
|
||
LD (HL),D
|
||
INC HL
|
||
EXX
|
||
DJNZ InvLnLp
|
||
RET
|
||
|
||
CmpInv2 CP E
|
||
JR NZ,CmpInv3
|
||
EXX
|
||
LD (HL),E
|
||
INC HL
|
||
EXX
|
||
DJNZ InvLnLp
|
||
RET
|
||
|
||
CmpInv3 CP IXH
|
||
JR NZ,SetInv4
|
||
EXX
|
||
LD (HL),B
|
||
INC HL
|
||
EXX
|
||
DJNZ InvLnLp
|
||
RET
|
||
|
||
SetInv4 EXX
|
||
LD (HL),C
|
||
INC HL
|
||
EXX
|
||
DJNZ InvLnLp
|
||
RET
|