Rev 573 |
Rev 623 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
| ?url?
;LAST UPDATE: 03.12.2012 savelij
;
(
IX)
;+00 X
;+01 Y
;+02 V
;+03 H
;+04 C
;+05 C
;+06 F
;+07 N
; 7-0 => 8-9
,
; 1 => 8-9
; 6-0 => A-B
; 1 => A-B
;+08 |
;+09 |
;+0A :
;+0B :
;+0C |
;+0D |
;+0E :
;+0F :
;+10 |
;+11 |
;+12 :
;+13 :
;
;IX+6
;7-0-
, 1-
;6-0- ,1-
;5-0-
, 1-
;4-0-
, 1-
;3
;2-
;1-
;0-
;
.
;+0
; 7
; 6
,
; 5
,
; 4
; 3 \
; 2 }
; 1 }
; 0 /
;+1 X
;+2 Y
;+3 V
;+4 H
;+5 K
;
ZX
IWINW LD A,NUM_ZXSCR
JR IWINW0
;
ITWINW LD A,NUM_TXTSCR
;
IWINW0 EX AF,AF'
XOR A
LD (PAGE4READ),A
EX AF,AF'
LD HL,FLAGS
SET 4,(HL)
JR WINW0
;
ZX
WINW LD HL,FLAGS
RES 4,(HL)
LD IX,(RREG_IXL)
LD A,(R_77)
AND 7
WINW0 CP 3
JP Z,WINW_ZX
CP 7
RET NZ
EXX
LD BC,WIN_P2
LD A,(PAGE4READ)
OUT (C),A
EXX
LD D,(IX+0) ;X
LD E,(IX+1) ;Y
LD C,(IX+4) ;
EXX
LD H,(IX+2) ;V
LD L,(IX+3) ;H
LD D,(IX+6) ;FLAGS
XOR A
OUT (C),A
LD B,HIGH (WIN_P3)
LD A,0XF7
OUT (C),A
EXX
PUSH DE
LD B," "
EXX
PUSH HL
WINT2 LD A,L
EXX
PUSH DE
WINT1 EX AF,AF'
CALL PRTSYMTXTMODE
INC D
EX AF,AF'
DEC A
JR NZ,WINT1
POP DE
INC E
EXX
DEC H
JR NZ,WINT2
POP HL
BIT 7,D
EXX
POP DE
JR Z,TNIZ_RAMKA
;
PUSH DE
EXX
LD A,H
EXX
DEC A
ADD A,E
LD E,A
CALL COLOR_LINE
POP DE
JR TCENTR_RAMK
;
TNIZ_RAMKA EXX
LD A,H
EXX
PUSH DE
DEC A
ADD A,E
LD E,A
; LD B,"À"
LD B,5+0XF2 ;
CALL PRTSYMTXTMODE
; LD B,"Ä"
LD B,6+0XF2 ;
INC D
EXX
LD A,L
EXX
DEC A
DEC A
WINT04 EX AF,AF'
CALL PRTSYMTXTMODE
INC D
EX AF,AF'
DEC A
JR NZ,WINT04
; LD B,"Ù"
LD B,7+0XF2 ;
CALL PRTSYMTXTMODE
POP DE
TCENTR_RAMK EXX
BIT 6,D
EXX
JR NZ,TWERH_COLOR
;
EXX
LD A,H
EXX
DEC A
DEC A
; LD B,"³"
LD B,3+0XF2 ;
INC E
PUSH DE
WINT01 EX AF,AF'
CALL PRTSYMTXTMODE
INC E
EX AF,AF'
DEC A
JR NZ,WINT01
POP DE
PUSH DE
EXX
LD A,L
EXX
ADD A,D
DEC A
LD D,A
EXX
LD A,H
EXX
DEC A
DEC A
LD B,4+0XF2 ;
WINT02 EX AF,AF'
CALL PRTSYMTXTMODE
INC E
EX AF,AF'
DEC A
JR NZ,WINT02
POP DE
DEC E
TWERH_COLOR EXX
BIT 5,D
EXX
JR Z,TWERH_RAMK
;
PUSH DE
CALL COLOR_LINE
POP DE
JR TRADUGA
TWERH_RAMK EXX
BIT 6,D
EXX
JR NZ,TRADUGA
; LD B,"Ú"
LD B,0+0XF2 ;
CALL PRTSYMTXTMODE
; LD B,"Ä"
LD B,1+0XF2 ;
EXX
LD A,L
EXX
DEC A
DEC A
PUSH DE
INC D
WINT3 EX AF,AF'
CALL PRTSYMTXTMODE
INC D
EX AF,AF'
DEC A
JR NZ,WINT3
; LD B,"¿"
LD B,2+0XF2 ;
CALL PRTSYMTXTMODE
POP DE
TRADUGA
; EXX
; BIT 5,D
; EXX
; JR Z,TRASCH
; PUSH DE
; EXX
; LD A,L
; EXX
; ADD A,D
; SUB 5
; LD D,A
; PUSH DE
; LD B,8+0XF2 ;
; LD A,C
; AND 0XC7
; LD L,A
; AND 0XC0
; LD H,A
; LD A,C
; AND 7
; RLCA
; RLCA
; RLCA
; OR H
; ADD A,2
; LD C,A
; CALL PRTSYMTXTMODE
; INC D
; LD A,2*8+6
; OR H
; LD C,A
; CALL PRTSYMTXTMODE
; INC D
; LD A,6*8+4
; OR H
; LD C,A
; CALL PRTSYMTXTMODE
; INC D
; LD A,4*8+5
; OR H
; LD C,A
; CALL PRTSYMTXTMODE
; INC D
; LD A,L
; AND 7
; ADD A,5*8
; OR H
; LD C,A
; CALL PRTSYMTXTMODE
; POP BC
; POP DE
TRASCH INC D
LD (TADRSTR_Y),DE
LD A,D
LD (TXNEW),A
LD A,(FLAGS)
AND 8
JR NZ,TNOSET_MAIN
PCALL MAIN_MEM13,P_RST8
TNOSET_MAIN LD BC,WIN_P2
LD A,(PAGE4READ)
OUT (C),A
LD L,(IX+0X0C)
LD H,(IX+0X0D)
XOR A
OUT (C),A
EXX
BIT 4,D
EXX
RET NZ
ITPRINT_MESSAGE EXX
LD HL,0
LD (TEK_TEXT),HL
LD BC,WIN_P2
XOR A
OUT (C),A
LD A,(PAGE4READ)
LD H,A
OUT (C),H
LD L,0
EXX
TNEXT EXX
OUT (C),H
EXX
LD A,(HL)
INC HL
AND A
JP Z,STOP_TPRINTMSG
TPRINT CP 0X20
JP NC,TPRINTA
CP 3
JR Z,TNEXT
CP 9
JR NZ,TCOD0D
LD B,(HL)
INC HL
EXX
OUT (C),L
EXX
LD A,(TADRSTR_X)
ADD A,B
LD (TADRSTR_X),A
JP TNEXT
TCOD0D CP 0X0D
JR NZ,TCOD16
EXX
OUT (C),L
EXX
LD A,(TXNEW)
LD (TADRSTR_X),A
LD D,A
LD A,(TADRSTR_Y)
INC A
LD (TADRSTR_Y),A
LD E,A
JP TNEXT
TCOD16 CP 0X16
JR NZ,TCOD17
LD E,(HL)
INC HL
LD D,(HL)
INC HL
EXX
OUT (C),L
EXX
LD (TADRSTR_Y),DE
JP TNEXT
TCOD17 CP 0X17
JR NZ,TCOD1
LD C,(HL)
INC HL
LD A,C
EXX
OUT (C),L
EXX
LD (COLOR4SYM),A
JP TNEXT
TCOD1 CP 1
JR NZ,TCOD2
LD D,(IX+0)
LD E,(IX+1)
INC D
EXX
OUT (C),L
EXX
LD (TADRSTR_Y),DE
JP TNEXT
TCOD2 CP 2
JP NZ,TNEXT
LD DE,(TEK_TEXT)
LD A,D
OR E
JR NZ,TCOD2_1
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD (TEK_TEXT),HL
EX DE,HL
JP TNEXT
TCOD2_1 LD HL,(TEK_TEXT)
LD DE,0
LD (TEK_TEXT),DE
JP TNEXT
TPRINT_A LD A,(RREG_A)
ITPRINT_A EX AF,AF'
EXX
LD BC,WIN_P2
LD A,(PAGE4READ)
LD H,A
LD L,0
EX AF,AF'
EXX
LD HL,STOP_PRINTA
TPRINTA EX AF,AF'
EXX
OUT (C),L
EXX
PUSH HL
LD HL,TADRSTR_Y
LD E,(HL)
INC HL
LD D,(HL)
INC (HL)
LD A,(COLOR4SYM)
LD C,A
EXX
LD A,0XF7
OUT (C),A
EXX
LD H,E
LD L,0
LD E,D
LD A,D
LD D,L
SRL H
RR L
SRL H
RR L
SRL E
ADD HL,DE
AND 1
REPT 4
RRCA
ENDM
ADD A,HIGH (CPU2+LSYM)
LD D,A
LD E,LOW (CPU2+LSYM)
ADD HL,DE
EX AF,AF'
LD (HL),A
LD A,C
INC A
JP Z,TRINTA0
LD A,H
XOR 0X30
LD H,A
LD A,D
AND 0X10
REPT 4
RRCA
ENDM
ADD A,L
LD L,A
LD (HL),C
TRINTA0 EXX
OUT (C),L
EXX
POP HL
JP TNEXT
STOP_TPRINTMSG EXX
OUT (C),L
EXX
RET
;D-X E-Y B-SYMBOL C-COLOR
COLOR_LINE LD A,C
PUSH AF
AND 7
RLCA
RLCA
RLCA
LD H,A
LD A,C
RRCA
RRCA
RRCA
AND 7
OR H
LD H,A
LD A,C
AND 0XC0
OR H
LD C,A
LD B," "
EXX
LD A,L
EXX
WINT03 EX AF,AF'
CALL PRTSYMTXTMODE
INC D
EX AF,AF'
DEC A
JR NZ,WINT03
POP AF
LD C,A
RET
;D-X E-Y -> DE=ATTR ADR HL=DISP ADR
TDISP_ATTR LD H,E
LD L,0
LD E,D
LD A,D
LD D,L
SRL H
RR L
SRL H
RR L
SRL E
ADD HL,DE
AND 1
REPT 4
RRCA
ENDM
ADD A,HIGH (CPU3+LSYM)
LD D,A
LD E,LOW (CPU3+LSYM)
ADD HL,DE ;HL=
LD E,H
LD A,H
XOR 0X30
LD D,A
LD A,E
AND 0X10
REPT 4
RRCA
ENDM
ADD A,L
LD E,A
RET
;
;D-X E-Y B-SYMBOL C-COLOR
PRTSYMTXTMODE PUSH DE
PUSH HL
CALL TDISP_ATTR
LD (HL),B
LD A,C
INC A
JR Z,PRTSYMTXTMODE0
EX DE,HL
LD (HL),C
PRTSYMTXTMODE0 POP HL
POP DE
RET
WINW_ZX EXX
LD BC,RD_7FFD
IN A,(C)
AND 8
RRCA
RRCA
RRCA
RRCA
LD D,A
LD BC,WIN_P2
LD A,(PAGE4READ)
OUT (C),A
LD A,(IX+2)
ADD A,A
ADD A,A
ADD A,A
LD E,A
EXX
LD C,(IX+3)
LD L,(IX+1)
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
EX DE,HL
LD IY,BUFTSC
ADD IY,DE
WINW3 LD A,(IX+0)
ADD A,(IY+0)
LD E,A
LD A,(IY+1)
EXX
ADD A,D
EXX
LD D,A
; LD A,D
AND 7
JR NZ,WINW4
LD B,C
LD A,D
RRCA
RRCA
RRCA
AND 3
ADD A,0X58
EXX
ADD A,D
EXX
LD H,A
LD L,E
LD A,(IX+4)
WINW5 LD (HL),A
INC L
DJNZ WINW5
WINW4 LD B,C
XOR A
WINW6 LD (DE),A
INC E
DJNZ WINW6
INC IY
INC IY
EXX
DEC E
EXX
JR NZ,WINW3
BIT 7,(IX+6)
JR Z,NIZ_RAMKA
;
LD DE,0XFFF0
ADD IY,DE
LD A,(IX+0)
ADD A,(IY+0)
LD E,A
LD A,(IY+1)
RRCA
RRCA
RRCA
AND 3
ADD A,0X58
EXX
ADD A,D
EXX
LD D,A
LD B,C
LD L,(IX+4)
LD A,L
AND 7
RLCA
RLCA
RLCA
LD H,A
LD A,L
RRCA
RRCA
RRCA
AND 7
OR H
WINWN1 LD (DE),A
INC E
DJNZ WINWN1
LD DE,0X0E
ADD IY,DE
JR CENTR_RAMK
;
NIZ_RAMKA DEC IY
DEC IY
LD L,(IX+0)
LD A,(IY+0)
ADD A,L
LD E,A
LD H,A
LD A,(IY+1)
EXX
ADD A,D
EXX
LD D,A
LD B,C
LD A,0XFF
NR1 LD (DE),A
INC E
DJNZ NR1
DEC E
DEC D
LD L,H
LD H,D
LD A,0X80
LD B,7
NR2 LD (HL),A
RLCA
LD (DE),A
RRCA
DEC H
DEC D
DJNZ NR2
CENTR_RAMK BIT 6,(IX+6)
JR NZ,WERH_COLOR
;
EXX
LD A,(IX+2)
SUB 2
LD E,A
EXX
NR4 LD DE,0XFFF0
ADD IY,DE
LD L,(IX+0)
LD A,(IY+0)
ADD A,L
LD E,A
LD A,(IY+1)
EXX
ADD A,D
EXX
LD D,A
LD A,E
LD H,D
ADD A,(IX+3)
DEC A
LD L,A
LD A,0X80
LD B,8
NR3 LD (DE),A
RLCA
LD (HL),A
RRCA
DEC H
DEC D
DJNZ NR3
EXX
DEC E
EXX
JR NZ,NR4
WERH_COLOR BIT 5,(IX+6)
JR Z,WERH_RAMK
;
LD L,(IX+1)
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
EX DE,HL
LD IY,BUFTSC
ADD IY,DE
LD A,(IX+0)
ADD A,(IY+0)
LD E,A
LD A,(IY+1)
RRCA
RRCA
RRCA
AND 3
ADD A,0X58
EXX
ADD A,D
EXX
LD D,A
LD B,C
LD L,(IX+4)
LD A,L
AND 7
RLCA
RLCA
RLCA
LD H,A
LD A,L
RRCA
RRCA
RRCA
AND 7
OR H
WINWW1 LD (DE),A
INC E
DJNZ WINWW1
JP RADUGA
WERH_RAMK BIT 6,(IX+6)
JR NZ,RADUGA
;
WR4 LD DE,0XFFF0
ADD IY,DE
LD L,(IX+0)
LD A,(IY+0)
ADD A,L
LD E,A
LD A,(IY+1)
EXX
ADD A,D
EXX
LD D,A
LD A,E
LD H,D
ADD A,(IX+3)
DEC A
LD L,A
LD A,0X80
LD B,7
WR3 LD (DE),A
RLCA
LD (HL),A
RRCA
DEC H
DEC D
DJNZ WR3
LD A,L
SUB E
LD B,A
INC B
LD A,0XFF
WR5 LD (DE),A
INC E
DJNZ WR5
RADUGA BIT 5,(IX+6)
JR Z,RASCH
LD IY,BUFTSC
LD L,(IX+1)
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
EX DE,HL
ADD IY,DE
LD L,(IY+0)
LD A,(IY+1)
LD D,A
RRCA
RRCA
RRCA
AND 3
ADD A,0X58
EXX
ADD A,D
EXX
LD H,A
LD A,(IX+0)
ADD A,(IX+3)
ADD A,L
LD L,A
LD E,A
LD A,(IX+4)
AND 0X47
LD C,A
AND 0X40
LD B,A
DEC L
LD A,C
ADD A,5*8
LD (HL),A ;5*8+7
DEC L
LD A,4*8+5
OR B
LD (HL),A ;4*8+5
DEC L
LD A,6*8+4
OR B
LD (HL),A ;6*8+4
DEC L
LD A,2*8+6
OR B
LD (HL),A ;2*8+6
DEC L
LD A,C
AND 7
RLCA
RLCA
RLCA
OR B
ADD A,2
LD (HL),A ;7*8+2
EX DE,HL
DEC L
LD B,8
XOR A
LD C,L
RADUGA1 SCF
RLA
LD (HL),A
DEC L
LD (HL),A
DEC L
LD (HL),A
DEC L
LD (HL),A
DEC L
LD (HL),A
LD L,C
INC H
DJNZ RADUGA1
RASCH LD A,(IX+0)
LD L,(IX+1)
ADD A,A
ADD A,A
ADD A,A
LD H,A
INC H
EXX
XOR A
OUT (C),A
EXX
LD A,H
LD (XNEW),A
LD (ADRSTR_Y),HL
EXX
LD A,(PAGE4READ)
OUT (C),A
EXX
LD L,(IX+0X0C)
LD H,(IX+0X0D)
EXX
XOR A
OUT (C),A
EXX
BIT 4,(IX+6)
JP Z,IPRINT_MESSAGE
RET
CLS LD HL,0
LD D,H
LD E,L
ADD HL,SP
LD B,0X60
LD SP,0X5800
CLS1 REPT 0X20
PUSH DE
ENDM
DJNZ CLS1
LD SP,HL
CLSSCR LD HL,0
LD D,A
LD E,A
ADD HL,SP
LD SP,0X5B00
LD B,12
CLS2 REPT 0X20
PUSH DE
ENDM
DJNZ CLS2
LD SP,HL
RRCA
RRCA
RRCA
AND 7
OUT (0XFE),A
RET
STOP_PRINTMSG LD BC,WIN_P2
XOR A
OUT (C),A
RET
;
(
)
PRINT_MESSAGE LD HL,(RREG_L)
IPRINT_MESSAGE LD BC,RD_7FFD
IN A,(C)
AND 8
LD BC,BUFTSC
JR Z,IPM1
LD BC,BUFTSC1
IPM1 LD (TEKBUFTSC),BC
LD BC,WIN_P2
;
(
)
NEXT LD A,(PAGE4READ)
OUT (C),A
LD A,(HL)
INC HL
AND A
JR Z,STOP_PRINTMSG
PRINT CP 0X20
JP NC,PRINTA
COD03 CP 3
JR NZ,COD9
LD D,0 ;
LD A,H
EX AF,AF'
LD E,L
CEN2 LD A,(HL)
CP 0X20
JR C,CEN3
LD A,6
ADD A,D
LD D,A
INC HL
JR CEN2
CEN3 XOR A
OUT (C),A
LD A,(IX+3)
ADD A,A
ADD A,A
ADD A,A
SUB D
SRL A
DEC A
LD H,A
LD A,(XNEW)
ADD A,H
LD (ADRSTR_X),A
EX AF,AF'
LD H,A
LD L,E
JP NEXT
COD9 CP 9
JR NZ,COD0D
LD D,(HL) ; N
INC HL
LD A,D
ADD A,A
ADD A,D
ADD A,A
LD D,A
XOR A
OUT (C),A
LD A,(ADRSTR_X)
ADD A,D
LD (ADRSTR_X),A
JR NEXT
COD0D CP 0X0D
JR NZ,COD16
XOR A
OUT (C),A
LD A,(XNEW) ;
LD (ADRSTR_X),A
LD A,(ADRSTR_Y)
INC A;ADD A,8
LD (ADRSTR_Y),A
JP NEXT
COD16 CP 0X16
JR NZ,COD17
LD E,(HL) ;
INC HL
LD D,(HL)
INC HL
XOR A
OUT (C),A
LD (ADRSTR_Y),DE
JP NEXT
COD17 CP 0X17
JR NZ,COD1
LD D,(HL)
INC HL
XOR A
OUT (C),A
LD A,D
LD (COLOR4SYM),A
JP NEXT
;
COD1 CP 1
JP NZ,NEXT
XOR A
OUT (C),A
LD A,(IX+0)
LD E,(IX+1)
ADD A,A
ADD A,A
ADD A,A
INC A
LD D,A
LD (ADRSTR_Y),DE
JP NEXT
PRINT_A LD A,(RREG_A)
IPRINT_A EX AF,AF'
LD A,(R_77)
AND 7
CP 7
JP Z,ITPRINT_A
CP 3
RET NZ
EX AF,AF'
LD BC,WIN_P2
LD HL,STOP_PRINTA
;
"A"
PRINTA EX AF,AF'
XOR A
OUT (C),A
PUSH HL
LD H,A
EX AF,AF'
LD L,A
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD DE,CHARS
ADD HL,DE
LD A,(COLOR4SYM)
LD D,A
EXX
LD HL,(ADRSTR_Y) ;H=X L=Y
LD B,0
LD D,B
LD A,H
AND 7
LD C,A
LD IY,SDVIG
ADD IY,BC
LD A,H
AND 0XF8
RRCA
RRCA
RRCA
EX AF,AF'
LD A,6
ADD A,H
LD H,A
LD (ADRSTR_Y),HL
LD A,L
RLCA
RLCA
RLCA
LD E,A
LD HL,(TEKBUFTSC);BUFTSC
ADD HL,DE
ADD HL,DE
EX AF,AF'
ADD A,(HL)
INC HL
LD E,A
LD D,(HL)
LD HL,BUFMSK
ADD HL,BC
ADD HL,BC
LD B,(HL)
INC HL
LD C,(HL)
EXX
LD A,(PAGE4READ)
OUT (C),A
EXX
LD A,8
SLEDU EX AF,AF'
EXX
LD A,(HL)
INC HL
EXX
LD L,A
LD H,0
JP (IY)
SDVIG REPT 8
ADD HL,HL
ENDM
LD A,(DE)
AND B
OR H
LD (DE),A
INC E
LD A,(DE)
AND C
OR L
LD (DE),A
DEC E
INC D
EX AF,AF'
DEC A
JP NZ,SLEDU
EX DE,HL
EXX
LD A,D
EXX
LD E,A
INC A
JR Z,PRINTA1
DEC H
LD A,H
RRCA
RRCA
RRCA
AND 3
OR 0X58
LD H,A
LD (HL),E
PRINTA1 EXX
XOR A
OUT (C),A
POP HL
JP NEXT
STOP_PRINTA DB 0
BUFMSK DB %00000011,%11111111
DB %10000001,%11111111
DB %11000000,%11111111
DB %11100000,%01111111
DB %11110000,%00111111
DB %11111000,%00011111
DB %11111100,%00001111
DB %11111110,%00000111
;
COLOR_CURSOR LD HL,FLAGS
BIT 7,(HL)
JP Z,COLORCURS4
LD BC,WIN_P3
LD A,0XF7
OUT (C),A
LD B,(IX+3)
LD DE,(COL_CURSOR)
CALL TRESTORE_CLINE
COLORCURS6 LD A,(IX+7)
BIT 7,A
JR Z,COLORCURS5
LD L,(IX+8)
LD H,(IX+9)
LD A,(HL)
COLORCURS5 LD D,(IX+0)
ADD A,(IX+1)
LD E,A
INC E
LD (COL_CURSOR),DE
LD BC,WIN_P3
LD A,0XF7
OUT (C),A
LD B,(IX+3)
CALL TSTORE_CLINE
LD A,(IX+5)
AND 0XF8
LD C,A
PUSH HL
PUSH DE
PUSH BC
LD (COL_CURSOR),DE
CALL TDISP_ATTR
LD A,D
XOR 0X10
LD H,A
LD A,D
AND 0X10
REPT 4
RRCA
ENDM
ADD A,E
LD L,A
TCOLORLINE2 EX DE,HL
LD A,(HL)
AND 0XC7
OR C
LD (HL),A
INC HL
DJNZ TCOLORLINE2
POP BC
POP DE
POP HL
RET
;
;D-X E-Y B- C-
TCOLOR_LINE PUSH HL
PUSH DE
PUSH BC
LD (COL_CURSOR),DE
CALL TDISP_ATTR
LD A,D
XOR 0X10
LD H,A
LD A,D
AND 0X10
REPT 4
RRCA
ENDM
ADD A,E
LD L,A
TCOLORLINE1 EX DE,HL
LD (HL),C
INC HL
DJNZ TCOLORLINE1
POP BC
POP DE
POP HL
RET
; 00 01 02 03 04 05 06
;F1C0 E1C1 F1C1 E1C2 F1C2 E1C3 F1C3
;
;D-X E-Y B-
TSTORE_CLINE PUSH HL
PUSH DE
PUSH BC
CALL TDISP_ATTR
LD A,D
XOR 0X10
LD H,A
LD A,D
AND 0X10
REPT 4
RRCA
ENDM
ADD A,E
LD L,A
TSTORECLINE1 EXX
LD HL,COLBUF
EXX
TSTORECLINE2 EX DE,HL
LD A,(HL)
INC HL
EXX
LD (HL),A
INC HL
EXX
DJNZ TSTORECLINE2
POP BC
POP DE
POP HL
RET
;
;D-X E-Y B-
TRESTORE_CLINE PUSH HL
PUSH DE
PUSH BC
LD B,(IX+3)
LD DE,(COL_CURSOR)
CALL TDISP_ATTR
LD A,D
XOR 0X10
LD H,A
LD A,D
AND 0X10
REPT 4
RRCA
ENDM
ADD A,E
LD L,A
TRESTCLINE1 EXX
LD HL,COLBUF
EXX
TRESTCLINE2 EX DE,HL
EXX
LD A,(HL)
INC HL
EXX
LD (HL),A
INC HL
DJNZ TRESTCLINE2
POP BC
POP DE
POP HL
RET
RESTORE_CLINE LD HL,FLAGS
BIT 7,(HL)
JR NZ,TREST_CLINE
LD DE,(COL_CURSOR)
LD HL,COLBUF
LD C,(IX+3)
LD B,0
LDIR
RET
TREST_CLINE LD BC,WIN_P3
LD A,0XF7
OUT (C),A
LD B,(IX+3)
LD DE,(COL_CURSOR)
JP TRESTORE_CLINE
COLORCURS4 LD DE,(COL_CURSOR)
LD HL,COLBUF
LD C,(IX+3)
; BIT 2,(IY+55) ;
?
; JR Z,COLCURS1
; DEC C ;
1
COLCURS1 LD B,0
LDIR
SET_ADR_ATR LD HL,FLAGS
BIT 7,(HL)
JP NZ,COLORCURS6
LD A,(IX+7)
BIT 7,A
JR Z,COLCURS3
LD L,(IX+8)
LD H,(IX+9)
LD A,(HL)
COLCURS3 ;LD B,A
LD H,(IX+0)
LD L,(IX+1)
ADD A,L
LD L,A
INC L
CALL ADRDIS
EX DE,HL
LD (COL_CURSOR),HL ;
LD DE,COLBUF
LD B,(IX+3)
; BIT 2,(IY+55) ;
?
; JR Z,COLCURS2
; DEC B ;
1
COLCURS2 LD C,(IX+5)
LD A,(HL)
LD (DE),A
LD (HL),C
INC L
INC E
DJNZ $-5
RET
;H-X, L-Y
ADRDIS LD C,A
LD A,L
AND 0X18
OR 0X40
EX AF,AF'
LD A,L
AND 7
RRCA
RRCA
RRCA
ADD A,H
LD L,A
EX AF,AF'
LD H,A
LD E,L
ADRATR LD A,H
RRCA
RRCA
RRCA
AND 3
OR 0X58
LD D,A
LD A,C
RET
INC_H INC H
LD A,H
AND 7
RET NZ
LD A,L
ADD A,0X20
LD L,A
RET C
UMEHL1 LD A,H
SUB 8
LD H,A
RET
SCRUP LD HL,FLAGS
BIT 7,(HL)
JR NZ,TSCRUP
PUSH IX
EXX
LD BC,WIN_P2
LD A,0XFD
OUT (C),A
EXX
LD L,(IX+1)
INC L
EXX
XOR A
OUT (C),A
EXX
CALL USTAN
SCRUP1 LD A,(IX+0X10)
ADD A,C
LD L,A
LD H,(IX+0X11)
LD A,(IX+0)
ADD A,C
LD E,A
LD D,(IX+1)
PUSH BC
CALL LDIST
POP BC
INC IX
INC IX
DJNZ SCRUP1
POP IX
RET
;
TSCRUP DI
PUSH IX
PUSH IY
LD BC,WIN_P3
LD A,0XF7
OUT (C),A
LD A,(IX+2)
SUB 3
LD B,A ;
LD C,(IX+3) ;
LD D,(IX+0) ;X
LD E,(IX+1)
INC E ;Y
LD A,E
ADD A,A
ADD A,A
EXX
LD C,A
LD B,0
LD IX,TBUFTSC
ADD IX,BC ;IX=
EXX
LD A,C
AND 0XFE
NEG
LD H,A ;
LD L,A ;
BIT 0,C
JR Z,TSCRUP1 ;
,
DEC L
DEC L
BIT 0,D
JR NZ,TSCRUP1
LD A,H
LD H,L
LD L,A
TSCRUP1 LD A,D
SRL A
LD D,A
ADC A,0
LD E,A
TSCRUP2 LD A,H
EXX
LD IY,LDI_END
LD E,A
LD D,0XFF
ADD IY,DE
EXX
LD A,E
EXX
LD E,A
ADD A,(IX+4)
LD L,A
LD H,(IX+5)
LD A,E
ADD A,(IX+0)
LD E,A
LD D,(IX+1)
CALL LDIST ;
EXX
LD A,E
EXX
LD E,A
ADD A,(IX+4+100)
LD L,A
LD H,(IX+5+100)
LD A,E
ADD A,(IX+0+100)
LD E,A
LD D,(IX+1+100)
CALL LDIST ;
EXX
LD A,L
EXX
LD IY,LDI_END
LD E,A
LD D,0XFF
ADD IY,DE
EXX
LD A,D
EXX
LD E,A
ADD A,(IX+6)
LD L,A
LD H,(IX+7)
LD A,E
ADD A,(IX+2)
LD E,A
LD D,(IX+3)
CALL LDIST ;
EXX
LD A,D
EXX
LD E,A
ADD A,(IX+6+100)
LD L,A
LD H,(IX+7+100)
LD A,E
ADD A,(IX+2+100)
LD E,A
LD D,(IX+3+100)
CALL LDIST ;
REPT 4
INC IX
ENDM
EXX
DJNZ TSCRUP2
POP IY
POP IX
RET
;0 2 4 6 8
; 1 3 5 7 9
; ===== 3
+ 2
;===== 2
+ 3
; ==== 2
+ 2
;==== 2
+ 2
;0 2 4 6 8
; 1 3 5 7 9
;C200 C201 C202 C203 C204
; D200 D201 D202 D203 D204
;----------------------------------------
;C240 C241 C242 C243 C244
; D240 D241 D242 D243 D244
;
TSCRDN DI
PUSH IX
PUSH IY
LD BC,WIN_P3
LD A,0XF7
OUT (C),A
LD A,(IX+2)
SUB 3
LD B,A ;
LD C,(IX+3) ;
LD D,(IX+0) ;X
LD A,(IX+1)
ADD A,(IX+2)
SUB 2
LD E,A ;Y
ADD A,A
ADD A,A
EXX
LD C,A
LD B,0
LD IX,TBUFTSC
ADD IX,BC ;IX=
EXX
LD A,C
AND 0XFE
NEG
LD H,A ;
LD L,A ;
BIT 0,C
JR Z,TSCRDN1
DEC L
DEC L
BIT 0,D
JR NZ,TSCRDN1
LD A,H
LD H,L
LD L,A
TSCRDN1 LD A,D
SRL A
LD D,A
ADC A,0
LD E,A
TSCRDN2 REPT 4
DEC IX
ENDM
LD A,H
EXX
LD IY,LDI_END
LD E,A
LD D,0XFF
ADD IY,DE
EXX
LD A,E
EXX
LD E,A
ADD A,(IX+0)
LD L,A
LD H,(IX+1)
LD A,E
ADD A,(IX+4)
LD E,A
LD D,(IX+5)
CALL LDIST ;
EXX
LD A,E
EXX
LD E,A
ADD A,(IX+0+100)
LD L,A
LD H,(IX+1+100)
LD A,E
ADD A,(IX+4+100)
LD E,A
LD D,(IX+5+100)
CALL LDIST ;
EXX
LD A,L
EXX
LD IY,LDI_END
LD E,A
LD D,0XFF
ADD IY,DE
EXX
LD A,D
EXX
LD E,A
ADD A,(IX+2)
LD L,A
LD H,(IX+3)
LD A,E
ADD A,(IX+6)
LD E,A
LD D,(IX+7)
CALL LDIST ;
EXX
LD A,D
EXX
LD E,A
ADD A,(IX+2+100)
LD L,A
LD H,(IX+3+100)
LD A,E
ADD A,(IX+6+100)
LD E,A
LD D,(IX+7+100)
CALL LDIST ;
EXX
DJNZ TSCRDN2
POP IY
POP IX
RET
SCRDN LD HL,FLAGS
BIT 7,(HL)
JP NZ,TSCRDN
PUSH IX
EXX
LD BC,WIN_P2
LD A,0XFD
OUT (C),A
EXX
LD A,(IX+2)
ADD A,(IX+1)
SUB 2
LD L,A
EXX
XOR A
OUT (C),A
EXX
CALL USTAN
DEC IX
DEC IX
SCRDN1 LD A,(IX+0)
ADD A,C
LD L,A
LD H,(IX+1)
LD A,(IX+0X10)
ADD A,C
LD E,A
LD D,(IX+0X11)
PUSH BC
CALL LDIST
POP BC
DEC IX
DEC IX
DJNZ SCRDN1
POP IX
RET
MOVE_STROK EXX
LD IY,LDI_END
ADD A,A
NEG
LD E,A
LD D,0XFF
ADD IY,DE
EXX
LD A,D
EXX
SRL A
LD E,A
ADD A,(IX+4)
LD L,A
LD H,(IX+5)
LD A,E
ADD A,(IX+0)
LD E,A
LD D,(IX+1)
CALL LDIST
EXX
RET
USTAN LD A,(IX+3)
ADD A,A
LD E,A
LD A,L
LD D,0
LD HL,LDI_END
AND A
SBC HL,DE
PUSH HL
POP IY
LD C,(IX+0)
LD L,A
LD A,(IX+2)
SUB 3
ADD A,A
ADD A,A
ADD A,A
LD B,A
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD IX,BUFTSC
EX DE,HL
ADD IX,DE
ADD IX,DE
RET
LDIST DB 0XFD
JP (HL)
REPT 80
LDI
ENDM
LDI_END RET
SYM00 DB %11111111
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
SYM01 DB %11111111
DB %00000000
DB %00000000
DB %00000000
DB %00000000
DB %00000000
DB %00000000
DB %00000000
SYM02 DB %11111111
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
SYM03 DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
SYM04 DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
SYM05 DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %10000000
DB %11111111
SYM06 DB %00000000
DB %00000000
DB %00000000
DB %00000000
DB %00000000
DB %00000000
DB %00000000
DB %11111111
SYM07 DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %00000001
DB %11111111
END_MAGICSYM
;ICO_MOUSE0 DB %00111111,%00000000;3F,00
; DB %00011111,%01000000;1F,40
; DB %00001111,%01100000;0F,60
; DB %00000111,%01010000;07,50
; DB %00000011,%01001000;03,48
; DB %00000001,%01001100;01,4C
; DB %00000001,%01110000;01,70
; DB %00000111,%00000000;07,00
;ICO_MOUSE1 DB %00111111,%00000000;3F,00
; DB %00011111,%01000000;1F,40
; DB %00001111,%01100000;0F,60
; DB %00000111,%01110000;07,70
; DB %00000011,%01111000;03,78
; DB %00000001,%01111100;01,7C
; DB %00000001,%01110000;01,70
; DB %00000111,%00000000;07,00