802 lines
11 KiB
Plaintext
802 lines
11 KiB
Plaintext
|
||
; LAST UPDATE: 20.03.2025 savelij
|
||
|
||
;[]----------------------------------------------------------[]
|
||
InputLine LD (InpLnData),IX
|
||
LD (.InpMous),HL
|
||
SET 7,(IX+0x01)
|
||
SUB A
|
||
LD (IX+0x02),A
|
||
LD (IX+0x03),A
|
||
CALL InsInpLnCol
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
PUSH HL
|
||
LD E,(IX+0x04)
|
||
ADD HL,DE
|
||
LD (HL),D
|
||
LD (IX+0x02),E
|
||
POP HL
|
||
LD DE,WorkBuffer
|
||
LD A,(IX+0x02)
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,(IX+0x03)
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,(IX+0x04)
|
||
LD (DE),A
|
||
INC DE
|
||
LD C,A
|
||
LD B,0x00
|
||
OR B
|
||
JR Z,.L1
|
||
LDIR
|
||
.L1 CALL PrintInpLn.L1
|
||
.InpLineLp HALT
|
||
CALL ChCursor
|
||
LD IX,0x0000
|
||
.InpMous EQU $-2
|
||
CALL TestCoords
|
||
SPDSS DSSF.TESTKEY
|
||
JR Z,.InpLineLp
|
||
RES 7,D
|
||
BIT KEYBSTAT.B_ALT,B
|
||
JR NZ,.InpLineLp
|
||
LD IX,InpTable2
|
||
BIT KEYBSTAT.B_CTRL,B
|
||
JR NZ,.NextInpKeys
|
||
LD IX,InpTable1
|
||
.NextInpKeys LD L,(IX+0x00)
|
||
INC L
|
||
JR Z,.InpLineLp1
|
||
INC IX
|
||
DEC L
|
||
LD H,(IX+0x00)
|
||
INC IX
|
||
LD C,(IX+0x00)
|
||
INC IX
|
||
LD B,(IX+0x00)
|
||
INC IX
|
||
OR A
|
||
SBC HL,DE
|
||
JR NZ,.NextInpKeys
|
||
LD IX,(InpLnData)
|
||
LD HL,.InpLineLp
|
||
PUSH HL
|
||
PUSH BC
|
||
PUSH IX
|
||
SPDSS DSSF.SCANKEY
|
||
POP IX
|
||
RET
|
||
|
||
.InpLineLp1 LD IX,(InpLnData)
|
||
LD HL,.InpLineLp
|
||
PUSH HL
|
||
PUSH IX
|
||
SPDSS DSSF.SCANKEY
|
||
POP IX
|
||
LD A,E
|
||
JR InsertSymbol
|
||
|
||
.InpLnExtN POP HL
|
||
LD IX,(InpLnData)
|
||
CALL ResCursor
|
||
XOR A
|
||
RET
|
||
|
||
.InpLnExtC POP HL
|
||
LD IX,(InpLnData)
|
||
CALL ResCursor
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
EX DE,HL
|
||
LD HL,WorkBuffer
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IX+0x02),A
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IX+0x03),A
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IX+0x04),A
|
||
LD C,A
|
||
LD B,0x00
|
||
LD A,B
|
||
OR C
|
||
SCF
|
||
RET Z
|
||
LDIR
|
||
RET
|
||
|
||
InpLnData DEFW 0x0000 ; €¤à¥á ®¯¨á ⥫ï áâப¨
|
||
; +00 Œ ªá¨¬ «ì ï ¤«¨ áâப¨
|
||
; +01 ”« £ £®â®¢®áâ¨
|
||
; +02 ⥪ãé ï X ¯®§¨æ¨ï ªãàá®à
|
||
; +03 ⥪ãé ï AddX
|
||
; +04 ª®«¨ç¥á⢮ ¢¢¥¤¥ëå ᨬ¢®«®¢
|
||
; +05 X ¯®§¨æ¨ï áâப¨ íªà ¥
|
||
; +07 Y ¯®§¨æ¨ï áâப¨ íªà ¥
|
||
; +09 X ¤«¨ áâப¨ íªà ¥
|
||
; +0B –¢¥â áâப¨
|
||
; +0C ...á ¬ áâப
|
||
|
||
InpTable1 DW SC.ESC << 8 | 0x1B, InputLine.InpLnExtC
|
||
DW SC.ENTER << 8 | 0x0D, InputLine.InpLnExtN
|
||
DW SC.XENTER << 8 | 0x0D, InputLine.InpLnExtN
|
||
DW SC.X4 << 8, ILleft
|
||
DW SC.X6 << 8, ILright
|
||
DW SC.BKSP << 8 | 0x08, ILdelet
|
||
DW SC.XDEL << 8, IL_del_
|
||
DW SC.X7 << 8, ILhome
|
||
DW SC.X1 << 8, ILend
|
||
DB 0xFF
|
||
|
||
InpTable2 DW SC.X4 << 8, ILwordL
|
||
DW SC.X6 << 8, ILwordR
|
||
DW SC.BKSP << 8, ILdelWR
|
||
DB 0xFF
|
||
|
||
InsertSymbol CP ' '
|
||
RET C
|
||
EX AF,AF'
|
||
BIT 7,(IX+0x01) ; ready
|
||
CALL NZ,ClearInpLn
|
||
LD A,(IX+0x04) ; InpytSymb
|
||
SUB (IX+0x00) ; Max len
|
||
RET NC
|
||
LD A,(IX+0x04)
|
||
SUB (IX+0x02)
|
||
JR Z,NotInsert
|
||
; ‚¢®¤ ¢ á¥à¥¤¨ã ⥪áâ
|
||
LD C,A
|
||
LD B,0x00
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX+0x04)
|
||
ADD HL,DE
|
||
LD E,L
|
||
LD D,H
|
||
DEC HL
|
||
LDDR
|
||
NotInsert PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX+0x02)
|
||
ADD HL,DE
|
||
EX AF,AF'
|
||
LD (HL),A
|
||
INC (IX+0x04)
|
||
INC (IX+0x02)
|
||
JP PrintInpLn
|
||
|
||
; Clear Buffer
|
||
ClearInpLn RES 7,(IX+0x01)
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD B,(IX+0x00)
|
||
SUB A
|
||
.L1 LD (HL),A
|
||
INC HL
|
||
DJNZ .L1
|
||
LD (IX+0x02),A
|
||
LD (IX+0x03),A
|
||
LD (IX+0x04),A
|
||
JP PrintInpLn
|
||
|
||
; Šãàá®à ¢«¥¢® ®¤® ¬¥áâ®
|
||
ILleft RES 7,(IX+0x01)
|
||
LD A,(IX+0x02)
|
||
DEC A
|
||
RET M
|
||
LD (IX+0x02),A
|
||
JP PrintInpLn
|
||
|
||
; Šãàá®à ¢¯à ¢® ®¤® ¬¥áâ®
|
||
ILright RES 7,(IX+0x01)
|
||
LD A,(IX+0x02)
|
||
CP (IX+0x04)
|
||
RET Z
|
||
INC (IX+0x02)
|
||
JP PrintInpLn
|
||
|
||
; delete
|
||
ILdelet BIT 7,(IX+0x01) ; ready
|
||
CALL NZ,ClearInpLn
|
||
LD A,(IX+0x02)
|
||
OR A
|
||
RET Z
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX+0x02)
|
||
ADD HL,DE
|
||
LD E,L
|
||
LD D,H
|
||
DEC DE
|
||
LD A,(IX+0x04)
|
||
SUB (IX+0x02)
|
||
JR Z,ILDel1
|
||
LD C,A
|
||
LD B,0x00
|
||
LDIR
|
||
SUB A
|
||
ILDel1 LD (DE),A
|
||
DEC (IX+0x02)
|
||
DEC (IX+0x04)
|
||
JP PrintInpLn
|
||
|
||
; Delete Char in Current Position
|
||
IL_del_ BIT 7,(IX+0x01) ; ready
|
||
CALL NZ,ClearInpLn
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX+0x02)
|
||
ADD HL,DE
|
||
INC HL
|
||
LD E,L
|
||
LD D,H
|
||
DEC DE
|
||
LD A,(IX+0x04)
|
||
SUB (IX+0x02)
|
||
RET Z
|
||
LD C,A
|
||
LD B,0x00
|
||
LDIR
|
||
SUB A
|
||
LD (DE),A
|
||
DEC (IX+0x04)
|
||
JP PrintInpLn
|
||
|
||
; Home
|
||
ILhome RES 7,(IX+0x01)
|
||
LD A,(IX+0x02)
|
||
OR A
|
||
RET Z
|
||
SUB A
|
||
LD (IX+0x02),A
|
||
JP PrintInpLn
|
||
|
||
; End string
|
||
ILend RES 7,(IX+0x01)
|
||
LD A,(IX+0x04)
|
||
CP (IX+0x02)
|
||
RET Z
|
||
LD (IX+0x02),A
|
||
JP PrintInpLn
|
||
|
||
; Word right
|
||
ILwordR RES 7,(IX+0x01)
|
||
LD A,(IX+0x04)
|
||
SUB (IX+0x02)
|
||
RET Z
|
||
LD B,A
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX+0x02)
|
||
ADD HL,DE
|
||
LD C,E
|
||
.L2 LD A,(HL)
|
||
CP ' '
|
||
JR Z,.L3
|
||
CP ','
|
||
JR Z,.L3
|
||
CP '.'
|
||
JR Z,.L3
|
||
CP '\\'
|
||
JR Z,.L3
|
||
INC HL
|
||
INC C
|
||
DJNZ .L2
|
||
JR .L4
|
||
|
||
.L3 LD A,(HL)
|
||
CP ' '
|
||
JR Z,.L1
|
||
CP ','
|
||
JR Z,.L1
|
||
CP '.'
|
||
JR Z,.L1
|
||
CP '\\'
|
||
JR NZ,.L4
|
||
.L1 INC HL
|
||
INC C
|
||
DJNZ .L3
|
||
.L4 LD (IX+0x02),C
|
||
JP PrintInpLn
|
||
|
||
; Word left
|
||
ILwordL RES 7,(IX+0x01)
|
||
LD A,(IX+0x02)
|
||
OR A
|
||
RET Z
|
||
LD B,A
|
||
LD C,B
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,C
|
||
ADD HL,DE
|
||
.L3 DEC HL
|
||
DEC C
|
||
LD A,(HL)
|
||
CP ' '
|
||
JR Z,.L2
|
||
CP ','
|
||
JR Z,.L2
|
||
CP '.'
|
||
JR Z,.L2
|
||
CP 0x5C
|
||
JR Z,.L2
|
||
DJNZ .L3
|
||
JR .L5
|
||
|
||
.L2 LD A,(HL)
|
||
CP ' '
|
||
JR Z,.L1
|
||
CP ','
|
||
JR Z,.L1
|
||
CP '.'
|
||
JR Z,.L1
|
||
CP '\\'
|
||
JR NZ,.L4
|
||
.L1 DEC HL
|
||
DEC C
|
||
DJNZ .L2
|
||
.L4 INC C
|
||
.L5 LD (IX+0x02),C
|
||
JP PrintInpLn
|
||
|
||
; Delete word
|
||
ILdelWR RES 7,(IX+0x01)
|
||
LD A,(IX+0x02)
|
||
OR A
|
||
RET Z
|
||
LD B,A
|
||
LD C,B
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,C
|
||
ADD HL,DE
|
||
LD A,(IX+0x04)
|
||
SUB B
|
||
LD E,A
|
||
PUSH HL
|
||
DEC HL
|
||
DEC C
|
||
LD A,(HL)
|
||
CP ' '
|
||
JR Z,.L4
|
||
CP ','
|
||
JR Z,.L4
|
||
CP '.'
|
||
JR Z,.L4
|
||
CP '\\'
|
||
JR Z,.L4
|
||
DEC B
|
||
JR Z,.L6
|
||
.L3 DEC HL
|
||
DEC C
|
||
LD A,(HL)
|
||
CP ' '
|
||
JR Z,.L2
|
||
CP ','
|
||
JR Z,.L2
|
||
CP '.'
|
||
JR Z,.L2
|
||
CP '\\'
|
||
JR Z,.L2
|
||
DJNZ .L3
|
||
JR .L6
|
||
|
||
.L4 LD A,(HL)
|
||
CP ' '
|
||
JR Z,.L1
|
||
CP ','
|
||
JR Z,.L1
|
||
CP '.'
|
||
JR Z,.L1
|
||
CP '\\'
|
||
JR NZ,.L2
|
||
.L1 DEC HL
|
||
DEC C
|
||
DJNZ .L4
|
||
.L2 INC HL
|
||
INC C
|
||
.L6 LD A,(IX+0x02)
|
||
LD (IX+0x02),C
|
||
SUB C
|
||
LD C,A
|
||
EX AF,AF'
|
||
LD A,(IX+0x04)
|
||
SUB C
|
||
LD (IX+0x04),A
|
||
LD C,E
|
||
LD B,0x00
|
||
EX DE,HL
|
||
POP HL
|
||
LD A,C
|
||
OR A
|
||
JR Z,.L7
|
||
LDIR
|
||
.L7 EX DE,HL
|
||
EX AF,AF'
|
||
LD B,A
|
||
SUB A
|
||
.L5 LD (HL),A
|
||
INC HL
|
||
DJNZ .L5
|
||
JP PrintInpLn
|
||
|
||
;[]----------------------------------------------------------[]
|
||
InsInpLnCol LD L,(IX+0x07)
|
||
LD H,(IX+0x08)
|
||
LD (FillILy),HL
|
||
LD A,(IX+0x0B)
|
||
AND 0x0F ; INK
|
||
LD C,A
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR C
|
||
LD HL,PrnINKl ; INK ¡ãä¥à
|
||
LD B,0x08
|
||
CPL
|
||
.L1 LD (HL),A
|
||
INC HL
|
||
DJNZ .L1
|
||
LD B,A
|
||
LD A,(IX+0x0B)
|
||
AND 0xF0 ; PAPER
|
||
LD C,A
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
LD (FillILc),A
|
||
OR C
|
||
XOR B
|
||
LD HL,PrnPAPl ; PAPER ¡ãä¥à
|
||
LD B,0x08
|
||
.L2 LD (HL),A
|
||
INC HL
|
||
DJNZ .L2
|
||
RET
|
||
|
||
PrintInpLn CALL ResCursor
|
||
.L1 LD A,(IX+0x02)
|
||
SUB (IX+0x03)
|
||
JR NC,PrnInpLn1
|
||
LD A,(IX+0x03)
|
||
SUB Step
|
||
LD (IX+0x03),A
|
||
JR PrintInpLn.L1
|
||
|
||
PrnInpLn1 PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX+0x03)
|
||
ADD HL,DE
|
||
OR A
|
||
CALL NZ,TstInpLnLen ; <20> ¢å®¤: HL- ç «® ¢ë¢®¤
|
||
; € -ª®«.ᨬ¢.¤® ªãàá®à
|
||
PUSH IY
|
||
PUSH IX
|
||
LD A,(IX+0x07)
|
||
LD IYL,A ; Y ª®®à¤¨ â
|
||
LD A,(IX+0x04)
|
||
LD IYH,A
|
||
GETPORT WINSP.Y_PORT ; ‘®åà 塞 Y ¯®àâ
|
||
PUSH AF
|
||
EXX
|
||
LD HL,PrnPAPl
|
||
LD DE,PrnINKl
|
||
LD C,(IX+0x05)
|
||
LD B,(IX+0x06)
|
||
SRL B
|
||
RR C
|
||
SET 6,B
|
||
EXX
|
||
LD C,(IX+0x09)
|
||
LD B,(IX+0x0A)
|
||
SRL B
|
||
RR C
|
||
LD IXL,C
|
||
LD C,L ; €¤à¥á áâப¨
|
||
LD B,H
|
||
GETPORT WINSP.CPU1
|
||
LD IXH,A
|
||
DI
|
||
GETPORT WINSP.CPU0
|
||
PUSH AF
|
||
LD A,(RAMPAGES.FNFONT)
|
||
SETPORT WINSP.CPU0,,0
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x08
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,IYH
|
||
OR A
|
||
JR Z,PrnInpE
|
||
LD A,(BC)
|
||
INC BC
|
||
PInpLnP LD L,A
|
||
LD H,HIGH (FONT_RAW)-0xC0
|
||
PUSH BC
|
||
LD B,(HL) ; ¤«¨ ᨬ¢®«
|
||
INC H
|
||
LD E,(HL)
|
||
INC H
|
||
LD D,(HL)
|
||
LD HL,0x0008
|
||
EX DE,HL
|
||
SETPORT WINSP.CPU1,0x50
|
||
PrnLoopInp
|
||
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
|
||
DEC IXL
|
||
JR Z,.L1
|
||
DJNZ PrnLoopInp
|
||
.L1 POP BC
|
||
LD A,IXH
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,IXL
|
||
OR A
|
||
JR Z,PrnInpE
|
||
DEC IYH
|
||
JR Z,PrnInpE
|
||
LD A,(BC)
|
||
INC BC
|
||
OR A
|
||
JR NZ,PInpLnP
|
||
PrnInpE POP AF
|
||
SETPORT WINSP.CPU0,,0
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD A,IXL
|
||
OR A
|
||
JR Z,PrnInE1
|
||
LD L,A
|
||
LD H,0x00
|
||
ADD HL,HL
|
||
LD (FillILl),HL
|
||
EXX
|
||
PUSH BC
|
||
EXX
|
||
POP HL
|
||
RES 6,H
|
||
ADD HL,HL
|
||
LD (FillILx),HL
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_FILL 0x0000,0x0000,0x0000,8,0x00
|
||
W_END
|
||
FillILx EQU $-10
|
||
FillILy EQU $-8
|
||
FillILl EQU $-6
|
||
FillILc EQU $-2
|
||
|
||
PrnInE1 POP IX
|
||
POP IY
|
||
JP SetCursor
|
||
|
||
PrnINKl DB 8 DUP 0
|
||
PrnPAPl DB 8 DUP 0
|
||
|
||
TstInpLnLen PUSH IY
|
||
LD IYL,A
|
||
LD IYH,A
|
||
DI
|
||
GETPORT WINSP.CPU0
|
||
PUSH AF
|
||
LD A,(RAMPAGES.FNFONT)
|
||
SETPORT WINSP.CPU0,,0
|
||
LD D,HIGH (FONT_RAW)-0xC0
|
||
TstInpLn PUSH HL
|
||
LD BC,0x0000
|
||
TstInpL LD E,(HL)
|
||
INC HL
|
||
LD A,(DE)
|
||
ADD A,A
|
||
ADD A,C
|
||
LD C,A
|
||
LD A,B
|
||
ADC A,0x00
|
||
LD B,A
|
||
DEC IYL
|
||
JR NZ,TstInpL
|
||
LD L,(IX+0x09)
|
||
LD H,(IX+0x0A)
|
||
OR A
|
||
SBC HL,BC
|
||
JR NC,TstInpE
|
||
POP HL
|
||
LD BC,Step
|
||
ADD HL,BC
|
||
LD A,(IX+0x03)
|
||
ADD A,C
|
||
LD (IX+0x03),A
|
||
LD A,IYH
|
||
SUB C
|
||
LD IYH,A
|
||
LD IYL,A
|
||
JR TstInpLn
|
||
|
||
TstInpE POP HL
|
||
POP AF
|
||
SETPORT WINSP.CPU0,,0
|
||
EI
|
||
POP IY
|
||
RET
|
||
|
||
SetCursor PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX+0x03)
|
||
ADD HL,DE
|
||
LD BC,0x0000
|
||
LD A,(IX+0x02)
|
||
SUB E
|
||
JR Z,StCurs1
|
||
EX AF,AF'
|
||
DI
|
||
GETPORT WINSP.CPU0
|
||
PUSH AF
|
||
LD A,(RAMPAGES.FNFONT)
|
||
SETPORT WINSP.CPU0,,0
|
||
LD D,HIGH (FONT_RAW)-0xC0
|
||
EX AF,AF'
|
||
StCurs0 EX AF,AF'
|
||
LD E,(HL)
|
||
INC HL
|
||
LD A,(DE)
|
||
ADD A,A
|
||
ADD A,C
|
||
LD C,A
|
||
LD A,B
|
||
ADC A,0x00
|
||
LD B,A
|
||
EX AF,AF'
|
||
DEC A
|
||
JR NZ,StCurs0
|
||
POP AF
|
||
SETPORT WINSP.CPU0,,0
|
||
EI
|
||
StCurs1 LD (CurShiftX),BC
|
||
LD A,0x01
|
||
LD (CurCursor),A
|
||
LD A,CursTimer
|
||
LD (CrTimer),A
|
||
SetCr LD L,(IX+0x05)
|
||
LD H,(IX+0x06)
|
||
LD BC,(CurShiftX)
|
||
ADD HL,BC
|
||
SRL H
|
||
RR L
|
||
SET 6,H
|
||
GETPORT WINSP.CPU1
|
||
LD C,A
|
||
GETPORT WINSP.Y_PORT
|
||
LD B,A
|
||
PUSH BC
|
||
LD DE,CursBuffer
|
||
LD C,(IX+0x07)
|
||
DEC C
|
||
LD A,(IX+0x0B)
|
||
AND 0x0F
|
||
LD B,A
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR B
|
||
LD B,A
|
||
SETPORT WINSP.CPU1,0x50
|
||
DI
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x09
|
||
ACCEL ACCELCMD.COPY_VERT
|
||
LD A,(HL)
|
||
ACCEL ACCELCMD.COPY
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.FILL_VERT
|
||
LD (HL),B
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP BC
|
||
LD A,B
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD A,C
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
ResCursor LD L,(IX+0x05)
|
||
LD H,(IX+0x06)
|
||
LD BC,(CurShiftX)
|
||
ADD HL,BC
|
||
SRL H
|
||
RR L
|
||
SET 6,H
|
||
GETPORT WINSP.CPU1
|
||
LD C,A
|
||
GETPORT WINSP.Y_PORT
|
||
LD B,A
|
||
PUSH BC
|
||
LD DE,CursBuffer
|
||
LD B,(IX+0x07)
|
||
DEC B
|
||
LD C,WINSP.Y_PORT
|
||
SETPORT WINSP.CPU1,0x50
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x09
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(DE)
|
||
OUT (C),B
|
||
ACCEL ACCELCMD.COPY_VERT
|
||
LD (HL),A
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP BC
|
||
LD A,B
|
||
SETPORT WINSP.Y_PORT,,0
|
||
LD A,C
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
ChCursor LD HL,CrTimer
|
||
DEC (HL)
|
||
RET NZ
|
||
LD (HL),CursTimer
|
||
LD IX,(InpLnData)
|
||
LD A,(CurCursor)
|
||
XOR 0x01
|
||
LD (CurCursor),A
|
||
JR Z,ResCursor
|
||
JP SetCr
|
||
|
||
CurShiftX DEFW 0x00
|
||
CrTimer DEFB 0x00
|
||
CurCursor DEFB 0x00
|
||
CursBuffer DB 9 DUP 0
|