mirror of
https://github.com/Tolik-Trek/2D-Studio.git
synced 2026-06-15 01:21:33 +03:00
2035 lines
25 KiB
NASM
2035 lines
25 KiB
NASM
|
|
PAGE0: EQU #82
|
|
PAGE1: EQU #A2
|
|
PAGE2: EQU #C2
|
|
PAGE3: EQU #E2
|
|
Y_PORT: EQU #89
|
|
|
|
CAPSI: EQU 23658
|
|
LAST_K: EQU 23560
|
|
|
|
M_ITEM: EQU #01
|
|
M_GRAY: EQU #02
|
|
M_BAR: EQU #04
|
|
M_END: EQU #80
|
|
|
|
INIT: LD BC,#0880 ;OPEN 320x256 256COLOR
|
|
LD HL,#4000
|
|
LD E,1
|
|
CALL #3D13
|
|
LD HL,COLORS ;SET DESKTOP PALETTE
|
|
LD DE,#12EE ;& CURSOR COLORS
|
|
LD BC,#FFA4 ;#EE,#EF
|
|
XOR A
|
|
CALL #3D13
|
|
LD BC,256 ;CLEAR SCREEN
|
|
EXX
|
|
LD HL,0
|
|
LD D,H
|
|
LD E,L
|
|
LD BC,320
|
|
LD A,GREEN
|
|
CALL RECTAN
|
|
RET
|
|
|
|
BLACK: EQU #F0
|
|
RED: EQU #F1
|
|
GREEN: EQU #F2
|
|
YELLOW: EQU #F3
|
|
BLUE: EQU #F4
|
|
MAGENTA: EQU #F5
|
|
CYAN: EQU #F6
|
|
DGRAY: EQU #F7
|
|
GRAY: EQU #F8
|
|
BRED: EQU #F9
|
|
BGREEN: EQU #FA
|
|
BYELLOW: EQU #FB
|
|
BBLUE: EQU #FC
|
|
BMAGENT: EQU #FD
|
|
BCYAN: EQU #FE
|
|
WHITE: EQU #FF
|
|
|
|
COLORS: ; B G R
|
|
DEFB #00,#00,#00,#00 ;CURSOR
|
|
DEFB #FF,#FF,#FF,#00 ;CURSOR
|
|
|
|
DEFB #00,#00,#00,#00 ;BLACK
|
|
DEFB #00,#00,#80,#00 ;RED
|
|
DEFB #00,#80,#00,#00 ;GREEN
|
|
DEFB #00,#80,#80,#00 ;YELLOW
|
|
DEFB #80,#00,#00,#00 ;BLUE
|
|
DEFB #80,#00,#80,#00 ;MAGENTA
|
|
DEFB #80,#80,#00,#00 ;CYAN
|
|
DEFB #80,#80,#80,#00 ;BLACK/GRAY
|
|
DEFB #C0,#C0,#C0,#00 ;WHITE/GRAY
|
|
DEFB #00,#00,#FF,#00 ;RED
|
|
DEFB #00,#FF,#00,#00 ;GREEN
|
|
DEFB #00,#FF,#FF,#00 ;YELLOW
|
|
DEFB #FF,#00,#00,#00 ;BLUE
|
|
DEFB #FF,#00,#FF,#00 ;MAGENTA
|
|
DEFB #FF,#FF,#00,#00 ;CYAN
|
|
DEFB #FF,#FF,#FF,#00 ;WHITE
|
|
|
|
; HL/DE - X/Y
|
|
; A - COLOR
|
|
|
|
;POINT
|
|
|
|
POINT: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
OUT (Y_PORT),A
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
EX AF,AF'
|
|
LD (HL),A
|
|
POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
XORPIX: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
OUT (Y_PORT),A
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
CPL
|
|
LD (HL),A
|
|
POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; HL/E - X/Y
|
|
; BC - SIZE
|
|
; A - COLOR
|
|
|
|
;HORIZONTAL LINE DRAWER
|
|
|
|
HZLINE: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
OUT (Y_PORT),A
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
EX AF,AF'
|
|
LD D,H
|
|
LD E,L
|
|
LD (HL),A
|
|
INC DE
|
|
DEC BC
|
|
LDIR
|
|
POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
; HL/E - X/Y
|
|
; BC - SIZE
|
|
; A - COLOR
|
|
|
|
;HORIZONTAL PUNKTIR LINE DRAWER
|
|
|
|
HRUBBER: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
OUT (Y_PORT),A
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
EX AF,AF'
|
|
LD D,A
|
|
RUBB1: LD (HL),D
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,RUBB2
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,RUBB1
|
|
RUBB2: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;VERTICAL PUNKTIR LINE DRAWER
|
|
|
|
; HL/E - X/Y
|
|
; BC - SIZE
|
|
; A - COLOR
|
|
|
|
VRUBBER: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
LD D,A
|
|
EX AF,AF'
|
|
LD E,A
|
|
VRUB2: LD A,E
|
|
OUT (Y_PORT),A
|
|
LD (HL),D
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,VRUB3
|
|
INC E
|
|
INC E
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JP NZ,VRUB2
|
|
VRUB3: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
XFRAME: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
XFRM0: LD A,(HL)
|
|
CPL
|
|
LD (HL),A
|
|
INC HL
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,XFRM1
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,XFRM1
|
|
JP XFRM0
|
|
XFRM1: POP BC
|
|
POP HL
|
|
XFRM2: EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,XFRM3
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,XFRM3
|
|
EXX
|
|
EX AF,AF'
|
|
INC A
|
|
JR Z,XFRM5
|
|
INC A
|
|
JR Z,XFRM5
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
LD D,H
|
|
LD E,L
|
|
LD A,(HL)
|
|
CPL
|
|
LD (HL),A
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
CPL
|
|
LD (HL),A
|
|
LD H,D
|
|
LD L,E
|
|
JP XFRM2
|
|
XFRM3: EXX
|
|
EX AF,AF'
|
|
INC A
|
|
JR Z,XFRM5
|
|
INC A
|
|
JR Z,XFRM5
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
INC HL
|
|
XFRM4: LD A,(HL)
|
|
CPL
|
|
LD (HL),A
|
|
INC HL
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,XFRM5
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,XFRM5
|
|
JP XFRM4
|
|
XFRM5: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;HL/DE - X/Y
|
|
; BC - SIZE
|
|
|
|
;HORIZONTAL LINE DRAWER (BAR)
|
|
|
|
HZ2LINE: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
PUSH HL
|
|
PUSH BC
|
|
LD D,H
|
|
LD E,L
|
|
LD A,(SHADW_)
|
|
LD (HL),A
|
|
INC DE
|
|
DEC BC
|
|
LDIR
|
|
POP BC
|
|
POP HL
|
|
EX AF,AF'
|
|
INC A
|
|
HZ202: OUT (Y_PORT),A
|
|
LD D,H
|
|
LD E,L
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
INC DE
|
|
DEC BC
|
|
LDIR
|
|
POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;VERTICAL LINE DRAWER
|
|
|
|
; HL/E - X/Y
|
|
; BC - SIZE
|
|
; A - COLOR
|
|
|
|
VRLINE: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
LD D,A
|
|
EX AF,AF'
|
|
LD E,A
|
|
VR002: LD A,E
|
|
OUT (Y_PORT),A
|
|
LD (HL),D
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,VR003
|
|
INC E
|
|
JP NZ,VR002
|
|
VR003: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
DFRAME: PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
EXX
|
|
PUSH BC
|
|
EXX
|
|
INC HL
|
|
INC DE
|
|
LD A,(LSHADW_)
|
|
CALL FRAME
|
|
POP BC
|
|
EXX
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
LD A,(SHADW_)
|
|
JP FRAME
|
|
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
; A - COLOR
|
|
|
|
FRAME: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
LDIR
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
LD E,A
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,FRM05
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
LD A,E
|
|
EXX
|
|
JR Z,FRM03
|
|
EX AF,AF'
|
|
INC A
|
|
DEC BC
|
|
FRM02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD (HL),A
|
|
ADD HL,BC
|
|
LD (HL),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
LD E,A
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
LD A,E
|
|
EXX
|
|
JR Z,FRM03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,FRM02
|
|
FRM03: EX AF,AF'
|
|
INC A
|
|
FRM04: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
LDIR
|
|
FRM05: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
; A - COLOR
|
|
|
|
RECTAN: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
LD D,A
|
|
EX AF,AF'
|
|
REC02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
REC01: LD (HL),D
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JP NZ,REC01
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,REC03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,REC02
|
|
REC03: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;HL/DE - X/Y
|
|
;BC - HEIGHT/WIDTH
|
|
;IX - BITMAP
|
|
|
|
SPR_256: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
PUSH IX
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
POP DE
|
|
EX DE,HL
|
|
EX AF,AF'
|
|
SPR02H: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH DE
|
|
PUSH BC
|
|
LD B,0
|
|
LDIR
|
|
POP BC
|
|
POP DE
|
|
DEC B
|
|
JR Z,SPR03H
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,SPR02H
|
|
SPR03H: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
BPUSH: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
EX AF,AF'
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(DSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
DEC BC
|
|
LDIR
|
|
LD A,(LSHADW_)
|
|
LD (DE),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,BPS05
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,BPS03
|
|
EX AF,AF'
|
|
INC A
|
|
DEC BC
|
|
BPS02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(DSHADW_)
|
|
LD (HL),A
|
|
ADD HL,BC
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,BPS03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,BPS02
|
|
BPS03: EX AF,AF'
|
|
INC A
|
|
BPS04: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
LDIR
|
|
BPS05: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
BPOP: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
EX AF,AF'
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
DEC BC
|
|
LDIR
|
|
LD A,(DSHADW_)
|
|
LD (DE),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,BPP05
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,BPP03
|
|
EX AF,AF'
|
|
INC A
|
|
DEC BC
|
|
BPP02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
ADD HL,BC
|
|
LD A,(DSHADW_)
|
|
LD (HL),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,BPP03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,BPP02
|
|
BPP03: EX AF,AF'
|
|
INC A
|
|
BPP04: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
LD A,(DSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
LDIR
|
|
BPP05: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
|
|
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
PLANE: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
EX AF,AF'
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
DEC BC
|
|
LDIR
|
|
LD A,(DSHADW_)
|
|
LD (DE),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,PLN05
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,PLN03
|
|
EX AF,AF'
|
|
INC A
|
|
PLN02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
INC HL
|
|
LD A,(BODY)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
DEC BC
|
|
DEC BC
|
|
LDIR
|
|
LD A,(DSHADW_)
|
|
LD (DE),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,PLN03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,PLN02
|
|
PLN03: EX AF,AF'
|
|
INC A
|
|
PLN04: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
LD A,(DSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
LDIR
|
|
PLN05: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
;HL/DE - X/Y
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
PLACE: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
EX AF,AF'
|
|
OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(DSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
DEC BC
|
|
LDIR
|
|
LD A,(LSHADW_)
|
|
LD (DE),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,PLC05
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,PLC03
|
|
EX AF,AF'
|
|
INC A
|
|
PLC02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,(DSHADW_)
|
|
LD (HL),A
|
|
INC HL
|
|
LD A,(BODY)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
DEC BC
|
|
DEC BC
|
|
LDIR
|
|
LD A,(LSHADW_)
|
|
LD (DE),A
|
|
POP BC
|
|
POP HL
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JR Z,PLC03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,PLC02
|
|
PLC03: EX AF,AF'
|
|
INC A
|
|
PLC04: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
LD A,(LSHADW_)
|
|
LD (HL),A
|
|
LD D,H
|
|
LD E,L
|
|
INC DE
|
|
DEC BC
|
|
LDIR
|
|
PLC05: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
PCHARB: LD (TEMPX),HL
|
|
LD (TEMPY),DE
|
|
LD D,XH
|
|
LD E,XL
|
|
EX DE,HL
|
|
PRINTB: LD A,(HL)
|
|
PUSH BC
|
|
PUSH HL
|
|
CALL PRINT
|
|
POP HL
|
|
POP BC
|
|
INC HL
|
|
DJNZ PRINTB
|
|
RET
|
|
|
|
CHARS: LD (TEMPX),HL
|
|
LD (TEMPY),DE
|
|
PUSH IX
|
|
POP HL
|
|
PRINTZ: LD A,(HL)
|
|
INC HL
|
|
OR A
|
|
RET Z
|
|
PUSH HL
|
|
CALL PRINT
|
|
POP HL
|
|
JP PRINTZ
|
|
|
|
PCHARX: LD (TEMPX),HL
|
|
LD (TEMPY),DE
|
|
PUSH BC
|
|
POP HL
|
|
PCHARZ: LD A,(HL)
|
|
INC HL
|
|
OR A
|
|
RET Z
|
|
PUSH HL
|
|
CALL PRINT
|
|
POP HL
|
|
JP PCHARZ
|
|
|
|
BODY: DEFB #00
|
|
TEMPX: DEFW 0
|
|
TEMPY: DEFW 0
|
|
|
|
PRINT:
|
|
CHAR: LD C,A
|
|
LD B,FONTSIZ/256
|
|
PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,(BC)
|
|
INC B
|
|
PUSH BC
|
|
LD C,A
|
|
LD B,8
|
|
EXX
|
|
LD HL,(TEMPX)
|
|
LD C,A
|
|
LD B,0
|
|
ADD HL,BC
|
|
LD (TEMPX),HL
|
|
SBC HL,BC
|
|
LD DE,(TEMPY)
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
POP BC
|
|
LD A,(BODY)
|
|
LD D,A
|
|
EX AF,AF'
|
|
LD E,A
|
|
PINT000: LD A,E
|
|
OUT (Y_PORT),A
|
|
LD A,(BC)
|
|
PUSH BC
|
|
LD C,A
|
|
EXX
|
|
LD A,8
|
|
SUB C
|
|
JP Z,NONMV
|
|
LD HL,PINT001
|
|
LD DE,5
|
|
NXTMV: ADD HL,DE
|
|
DEC A
|
|
JP NZ,NXTMV
|
|
PUSH HL ;JP HL
|
|
EXX
|
|
LD A,C
|
|
RET
|
|
|
|
NONMV: EXX
|
|
LD A,C
|
|
PINT001: RLCA
|
|
JR NC,PINT002
|
|
LD (HL),D
|
|
PINT002: INC HL
|
|
RLCA
|
|
JR NC,PINT012
|
|
LD (HL),D
|
|
PINT012: INC HL
|
|
RLCA
|
|
JR NC,PINT022
|
|
LD (HL),D
|
|
PINT022: INC HL
|
|
RLCA
|
|
JR NC,PINT032
|
|
LD (HL),D
|
|
PINT032: INC HL
|
|
RLCA
|
|
JR NC,PINT042
|
|
LD (HL),D
|
|
PINT042: INC HL
|
|
RLCA
|
|
JR NC,PINT052
|
|
LD (HL),D
|
|
PINT052: INC HL
|
|
RLCA
|
|
JR NC,PINT062
|
|
LD (HL),D
|
|
PINT062: INC HL
|
|
RLCA
|
|
JR NC,PINT072
|
|
LD (HL),D
|
|
PINT072: INC HL
|
|
EXX
|
|
LD A,C
|
|
EXX
|
|
LD B,0
|
|
LD C,A
|
|
AND A
|
|
SBC HL,BC
|
|
POP BC
|
|
INC B
|
|
EXX
|
|
DEC B
|
|
EXX
|
|
JP Z,PINT005
|
|
INC E
|
|
JP NZ,PINT000
|
|
PINT005: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
LIGHT: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
LD A,(HLIGHP_)
|
|
LD D,A
|
|
LD A,(WINDOW_)
|
|
LD E,A
|
|
EX AF,AF'
|
|
LGH02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
LGH01: LD A,(HL)
|
|
CP E
|
|
JR Z,LGH04
|
|
LD A,(HLIGHI_)
|
|
LD (HL),A
|
|
JR LGH05
|
|
LGH04: LD (HL),D
|
|
LGH05: INC HL
|
|
DJNZ LGH01
|
|
POP BC
|
|
POP HL
|
|
DEC C
|
|
JR Z,LGH03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,LGH02
|
|
LGH03: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
DARK: PUSH HL
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
EX AF,AF'
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
LD A,(WINDOW_)
|
|
LD D,A
|
|
LD A,(HLIGHP_)
|
|
LD E,A
|
|
EX AF,AF'
|
|
DRK02: OUT (Y_PORT),A
|
|
EX AF,AF'
|
|
PUSH HL
|
|
PUSH BC
|
|
DRK01: LD A,(HL)
|
|
CP E
|
|
JR Z,DRK04
|
|
LD A,(WTEXT_)
|
|
LD (HL),A
|
|
JR DRK05
|
|
DRK04: LD (HL),D
|
|
DRK05: INC HL
|
|
DJNZ DRK01
|
|
POP BC
|
|
POP HL
|
|
DEC C
|
|
JR Z,DRK03
|
|
EX AF,AF'
|
|
INC A
|
|
JP NZ,DRK02
|
|
DRK03: POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
|
|
LBAR: LD L,A
|
|
LD H,0
|
|
ADD HL,HL
|
|
LD DE,XTABLE
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
INC HL
|
|
LD H,(HL)
|
|
LD L,A
|
|
LD DE,(MAIN_VY)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,(MAIN_VX)
|
|
INC HL
|
|
LD BC,(MAIN_W)
|
|
DEC BC
|
|
DEC BC
|
|
LD B,C
|
|
LD C,10
|
|
JP LIGHT
|
|
|
|
DBAR: LD L,A
|
|
LD H,0
|
|
ADD HL,HL
|
|
LD DE,XTABLE
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
INC HL
|
|
LD H,(HL)
|
|
LD L,A
|
|
LD DE,(MAIN_VY)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,(MAIN_VX)
|
|
INC HL
|
|
LD BC,(MAIN_W)
|
|
DEC BC
|
|
DEC BC
|
|
LD B,C
|
|
LD C,10
|
|
JP DARK
|
|
|
|
|
|
VERT_A: LD DE,3
|
|
LD IX,XTABLE
|
|
XOR A
|
|
EX AF,AF'
|
|
VERT_A1: LD A,(HL)
|
|
INC HL
|
|
CP M_END
|
|
JP Z,VERT_A2
|
|
CP M_BAR
|
|
CALL Z,ADDBARL
|
|
CP M_GRAY
|
|
CALL Z,ADDITM
|
|
CP M_ITEM
|
|
CALL Z,ADDITM
|
|
JP VERT_A1
|
|
|
|
VERT_A2: INC DE
|
|
INC DE
|
|
EX AF,AF'
|
|
LD (MAX_V_P),A
|
|
RET
|
|
|
|
ADDITM: LD (IX+0),E
|
|
LD (IX+1),D
|
|
INC IX
|
|
INC IX
|
|
EX DE,HL
|
|
LD BC,10
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
XOR A
|
|
LD BC,#1000
|
|
CPIR
|
|
EX AF,AF'
|
|
INC A
|
|
EX AF,AF'
|
|
INC HL
|
|
INC HL
|
|
RET
|
|
|
|
ADDBARL: EX DE,HL
|
|
LD BC,5
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
RET
|
|
|
|
HBAR: LD (DESC_H),IX
|
|
LD (MAIN_HX),HL
|
|
LD (MAIN_HY),DE
|
|
CALL MAKE_HT
|
|
XOR A
|
|
LD (CUR_H_P),A
|
|
LD (OPENFLG+1),A
|
|
CALL LHBAR
|
|
KCH: CALL OPENFLG
|
|
; CALL KEY
|
|
KCHL: CP #09
|
|
JP Z,INCSELH
|
|
CP #08
|
|
JP Z,DECSELH
|
|
CP #0A
|
|
JP Z,OPNSELH
|
|
CP #0D
|
|
JP Z,OPNSELH
|
|
RET
|
|
|
|
OPNSELH: LD A,#01
|
|
LD (OPENFLG+1),A
|
|
JP KCH
|
|
OPENFLG: LD A,#00
|
|
OR A
|
|
JP Z,KEY
|
|
LD A,(CUR_H_P)
|
|
LD HL,(DESC_H)
|
|
INC A
|
|
LD B,A
|
|
CALL GET_XX1
|
|
DEC HL
|
|
LD D,(HL)
|
|
DEC HL
|
|
LD E,(HL)
|
|
LD XH,D
|
|
LD XL,E
|
|
CALL POPUP
|
|
CP #0D
|
|
RET NZ
|
|
POP BC
|
|
RET
|
|
|
|
GET_XX1: LD A,(HL)
|
|
INC HL
|
|
CP M_END
|
|
RET Z
|
|
CP M_BAR
|
|
JP Z,GET_XX1
|
|
CP M_ITEM
|
|
JP Z,GET_XX2
|
|
CP M_GRAY
|
|
JP NZ,GET_XX1
|
|
GET_XX2: LD E,B
|
|
LD BC,#1000
|
|
XOR A
|
|
CPIR
|
|
INC HL
|
|
INC HL
|
|
LD B,E
|
|
DJNZ GET_XX1
|
|
RET
|
|
|
|
INCSELH: LD A,(CUR_H_P)
|
|
PUSH AF
|
|
CALL DHBAR
|
|
POP AF
|
|
LD HL,MAX_H_P
|
|
INC A
|
|
CP (HL)
|
|
JR NZ,INCSH1
|
|
XOR A
|
|
INCSH1: LD (CUR_H_P),A
|
|
CALL LHBAR
|
|
JP KCH
|
|
|
|
DECSELH: LD A,(CUR_H_P)
|
|
PUSH AF
|
|
CALL DHBAR
|
|
POP AF
|
|
OR A
|
|
JR NZ,DECSH1
|
|
LD A,(MAX_H_P)
|
|
DECSH1: DEC A
|
|
LD (CUR_H_P),A
|
|
CALL LHBAR
|
|
JP KCH
|
|
|
|
LHBAR: LD E,A
|
|
LD L,A
|
|
LD H,0
|
|
LD D,H
|
|
ADD HL,HL
|
|
ADD HL,DE
|
|
LD DE,YTABLE
|
|
ADD HL,DE
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
LD C,10
|
|
LD HL,(MAIN_HY)
|
|
EX DE,HL
|
|
JP LIGHT
|
|
|
|
DHBAR: LD E,A
|
|
LD L,A
|
|
LD H,0
|
|
LD D,H
|
|
ADD HL,HL
|
|
ADD HL,DE
|
|
LD DE,YTABLE
|
|
ADD HL,DE
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
LD C,10
|
|
LD HL,(MAIN_HY)
|
|
EX DE,HL
|
|
JP DARK
|
|
|
|
MAKE_HT: LD DE,(DESC_H)
|
|
LD IX,YTABLE
|
|
LD HL,(MAIN_HX)
|
|
XOR A
|
|
EX AF,AF'
|
|
MAKE_H1: LD A,(DE)
|
|
INC DE
|
|
CP M_ITEM
|
|
JP NZ,MAKE_H2
|
|
LD (IX+0),L
|
|
LD (IX+1),H
|
|
PUSH HL
|
|
CALL LENSTR
|
|
POP HL
|
|
LD (IX+2),C
|
|
ADD HL,BC
|
|
INC IX
|
|
INC IX
|
|
INC IX
|
|
EX AF,AF'
|
|
INC A
|
|
EX AF,AF'
|
|
INC DE
|
|
INC DE
|
|
JP MAKE_H1
|
|
|
|
MAKE_H2: EX AF,AF'
|
|
LD (MAX_H_P),A
|
|
RET
|
|
|
|
POPUP: LD (DESC_V),IX
|
|
LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
LD (MAIN_VX),HL
|
|
LD (MAIN_VY),DE
|
|
LD (MAIN_W),BC
|
|
EXX
|
|
LD HL,(DESC_V)
|
|
LD DE,6
|
|
ADD HL,DE
|
|
CALL VERT_A
|
|
LD C,E
|
|
LD B,D
|
|
LD (MAIN_L),BC
|
|
EXX
|
|
CALL PUTW
|
|
XOR A
|
|
LD (CUR_V_P),A
|
|
CALL LBAR
|
|
KC: CALL KEY
|
|
CP #0A
|
|
JP Z,INCSEL
|
|
CP #0B
|
|
JP Z,DECSEL
|
|
CP #0D
|
|
JP Z,RUNSEL
|
|
SCF
|
|
RET
|
|
|
|
RUNSEL: LD A,(CUR_V_P)
|
|
LD HL,(DESC_V)
|
|
INC A
|
|
LD B,A
|
|
CALL GET_XX1
|
|
DEC HL
|
|
LD D,(HL)
|
|
DEC HL
|
|
LD E,(HL)
|
|
EX DE,HL
|
|
LD A,#0D
|
|
AND A
|
|
RET
|
|
|
|
INCSEL: LD A,(CUR_V_P)
|
|
PUSH AF
|
|
CALL DBAR
|
|
POP AF
|
|
LD HL,MAX_V_P
|
|
INC A
|
|
CP (HL)
|
|
JR NZ,INCSV1
|
|
XOR A
|
|
INCSV1: LD (CUR_V_P),A
|
|
CALL LBAR
|
|
JP KC
|
|
|
|
DECSEL: LD A,(CUR_V_P)
|
|
PUSH AF
|
|
CALL DBAR
|
|
POP AF
|
|
OR A
|
|
JR NZ,DECSV1
|
|
LD A,(MAX_V_P)
|
|
DECSV1: DEC A
|
|
LD (CUR_V_P),A
|
|
CALL LBAR
|
|
JP KC
|
|
|
|
PUTW: LD A,(WINDOW_)
|
|
LD (BODY),A
|
|
CALL PLANE
|
|
LD HL,(MAIN_VY)
|
|
LD DE,5
|
|
ADD HL,DE
|
|
LD (POSS_Y),HL
|
|
LD HL,(MAIN_VX)
|
|
LD BC,8
|
|
ADD HL,BC
|
|
LD (POSS_X),HL
|
|
|
|
LD HL,(DESC_V)
|
|
LD DE,6
|
|
ADD HL,DE
|
|
POPUP1: LD A,(HL)
|
|
INC HL
|
|
CP M_END
|
|
RET Z
|
|
CP M_BAR
|
|
JP Z,BARR01
|
|
CP M_ITEM
|
|
EX DE,HL
|
|
LD XH,D
|
|
LD XL,E
|
|
LD HL,(POSS_X)
|
|
LD DE,(POSS_Y)
|
|
;;;;;;;
|
|
LD A,(WTEXT_)
|
|
LD (BODY),A
|
|
CALL CHARS
|
|
EX DE,HL
|
|
LD HL,(POSS_Y)
|
|
LD BC,10
|
|
ADD HL,BC
|
|
LD (POSS_Y),HL
|
|
EX DE,HL
|
|
INC HL
|
|
INC HL
|
|
JP POPUP1
|
|
|
|
BARR01: PUSH HL
|
|
LD HL,(MAIN_VX)
|
|
INC HL
|
|
LD DE,(POSS_Y)
|
|
LD BC,(MAIN_W)
|
|
DEC BC
|
|
DEC BC
|
|
CALL HZ2LINE
|
|
LD HL,(POSS_Y)
|
|
LD BC,5
|
|
ADD HL,BC
|
|
LD (POSS_Y),HL
|
|
POP HL
|
|
JP POPUP1
|
|
|
|
CUR_V_P: DEFB 0
|
|
MAX_V_P: DEFB 0
|
|
CUR_H_P: DEFB 0
|
|
MAX_H_P: DEFB 0
|
|
|
|
MAIN_X: DEFW 0
|
|
MAIN_Y: DEFW 0
|
|
DESC_V: DEFW 0
|
|
DESC_H: DEFW 0
|
|
MAIN_HX: DEFW 0
|
|
MAIN_HY: DEFW 0
|
|
MAIN_VX: DEFW 0
|
|
MAIN_VY: DEFW 0
|
|
MAIN_W: DEFW 0
|
|
MAIN_L: DEFW 0
|
|
POSS_X: DEFW 0
|
|
POSS_Y: DEFW 0
|
|
|
|
XTABLE: DEFW 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DEFW 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
YTABLE: DEFW 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DEFW 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
EDITBOX: PUSH IX
|
|
LD (EDITX),HL
|
|
LD (EDITY),DE
|
|
LD (EDITCX),BC
|
|
LD A,(IX+1)
|
|
LD (POSIT),A
|
|
XOR A
|
|
LD (SHIFT),A
|
|
POP HL
|
|
INC HL
|
|
INC HL
|
|
LD (ETXS),HL
|
|
EDIT1: CALL PRINBOX
|
|
CALL CURSORH
|
|
CALL KEY
|
|
CP 14
|
|
RET Z
|
|
CP 13
|
|
JP Z,PRINBOX
|
|
CP 11
|
|
RET Z
|
|
CP 10
|
|
RET Z
|
|
CP 4
|
|
RET Z
|
|
CP 5
|
|
RET Z
|
|
LD HL,EDIT1
|
|
PUSH HL
|
|
CP 6
|
|
JP Z,CAPS
|
|
CP 7
|
|
JP Z,RUSL
|
|
CP 8
|
|
JP Z,BACK
|
|
CP 9
|
|
JP Z,FORW
|
|
CP 12
|
|
JP Z,DELET
|
|
CP #20
|
|
RET C
|
|
EX AF,AF'
|
|
LD A,(IX+1)
|
|
CP (IX+0)
|
|
CCF
|
|
RET C
|
|
LD A,(IX+1)
|
|
LD E,A
|
|
LD D,0
|
|
LD HL,(ETXS)
|
|
ADD HL,DE
|
|
LD A,(POSIT)
|
|
LD E,A
|
|
LD A,(IX+1)
|
|
SUB E
|
|
JR Z,ADD_SM
|
|
LD B,D
|
|
LD C,A
|
|
LD D,H
|
|
LD E,L
|
|
DEC HL
|
|
LDDR
|
|
EX DE,HL
|
|
ADD_SM: EX AF,AF'
|
|
LD (HL),A
|
|
LD A,(POSIT)
|
|
INC A
|
|
LD (POSIT),A
|
|
INC (IX+1)
|
|
LD HL,(ETXE)
|
|
INC HL
|
|
LD (ETXE),HL
|
|
LD HL,SHIFT
|
|
SUB (HL)
|
|
RET Z
|
|
ADDL1: PUSH AF
|
|
LD HL,(SH+1)
|
|
LD DE,(ETXS)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
CALL REALXX
|
|
LD B,A
|
|
POP AF
|
|
SUB B
|
|
RET Z
|
|
LD HL,SHIFT
|
|
LD E,A
|
|
LD A,(HL)
|
|
ADD A,E
|
|
LD (HL),A
|
|
LD A,(POSIT)
|
|
SUB (HL)
|
|
JP NZ,ADDL1
|
|
RET
|
|
|
|
BACK: LD A,(POSIT)
|
|
OR A
|
|
RET Z ;JP Z,BCK
|
|
DEC A
|
|
LD (POSIT),A
|
|
INC A
|
|
LD HL,SHIFT
|
|
SUB (HL)
|
|
RET NZ
|
|
LD A,(STEP)
|
|
LD E,A
|
|
LD A,(HL)
|
|
SUB E
|
|
LD (HL),A
|
|
RET
|
|
|
|
CAPS: LD A,(CAPSI)
|
|
XOR 8
|
|
LD (CAPSI),A
|
|
RET
|
|
|
|
RUSL: LD A,(LANG+1)
|
|
XOR 1
|
|
LD (LANG+1),A
|
|
RET
|
|
|
|
FORW: LD A,(POSIT)
|
|
CP (IX+1)
|
|
RET Z ; JP Z,FRD
|
|
INC A
|
|
LD (POSIT),A
|
|
LD HL,SHIFT
|
|
SUB (HL)
|
|
RET Z
|
|
ADDL2: PUSH AF
|
|
LD HL,(SH+1)
|
|
LD DE,(ETXS)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
CALL REALXX
|
|
LD B,A
|
|
POP AF
|
|
SUB B
|
|
RET Z
|
|
LD HL,SHIFT
|
|
LD E,A
|
|
LD A,(HL)
|
|
ADD A,E
|
|
LD (HL),A
|
|
LD A,(POSIT)
|
|
SUB (HL)
|
|
JP NZ,ADDL2
|
|
RET
|
|
|
|
DELET: LD A,(POSIT)
|
|
OR A
|
|
RET Z ; JP Z,LINKSTR
|
|
LD HL,(ETXS)
|
|
LD E,A
|
|
LD D,0
|
|
ADD HL,DE
|
|
LD A,(IX+1)
|
|
SUB E
|
|
JR Z,SUB_SM
|
|
LD B,D
|
|
LD C,A
|
|
LD D,H
|
|
LD E,L
|
|
DEC DE
|
|
LDIR
|
|
SUB_SM: XOR A
|
|
DEC HL
|
|
LD (HL),A
|
|
LD A,(POSIT)
|
|
DEC A
|
|
LD (POSIT),A
|
|
DEC (IX+1)
|
|
LD HL,(ETXE)
|
|
DEC HL
|
|
LD (ETXE),HL
|
|
LD A,(SHIFT)
|
|
OR A
|
|
RET Z
|
|
DEC A
|
|
LD (SHIFT),A
|
|
RET
|
|
|
|
KEY: RES 5,(IY+1)
|
|
EI
|
|
KEY1: BIT 5,(IY+1)
|
|
JP Z,KEY1
|
|
LD A,(23560)
|
|
CP #20
|
|
RET C
|
|
CP 203
|
|
JR NZ,KE_1
|
|
LD A,125
|
|
KE_1: CP 204
|
|
JR NZ,KE_2
|
|
LD A,123
|
|
KE_2: CP 205
|
|
JR NZ,KE_3
|
|
LD A,92
|
|
KE_3: CP 195
|
|
JR NZ,KE_4
|
|
LD A,124
|
|
KE_4: CP 226
|
|
JR NZ,KE_6
|
|
LD A,126
|
|
KE_6: CP 197
|
|
JR NZ,KE_7
|
|
LD A,93
|
|
KE_7: CP 198
|
|
JR NZ,KE_8
|
|
LD A,91
|
|
KE_8:
|
|
LANG: LD B,0
|
|
INC B
|
|
DEC B
|
|
CALL NZ,RUSCOR
|
|
LD (LAST_K),A
|
|
RET
|
|
|
|
RUSCOR: CP 65
|
|
RET C
|
|
LD HL,FOR_RUS-65
|
|
ADD A,L
|
|
LD L,A
|
|
JR NC,$+3
|
|
INC H
|
|
LD B,(HL)
|
|
LD A,(23658)
|
|
XOR 8
|
|
LD A,B
|
|
RET Z
|
|
CP 154
|
|
JR NZ,RUS_1
|
|
LD A,234
|
|
RET
|
|
RUS_1: CP 158
|
|
JR NZ,RUS_2
|
|
LD A,238
|
|
RET
|
|
RUS_2: CP 152
|
|
JR NZ,RUS_3
|
|
LD A,232
|
|
RET
|
|
RUS_3: CP 157
|
|
JR NZ,RUS_4
|
|
LD A,237
|
|
RET
|
|
RUS_4: CP 153
|
|
JR NZ,RUS_5
|
|
LD A,233
|
|
RET
|
|
RUS_5: CP 151
|
|
RET NZ
|
|
LD A,231
|
|
RET
|
|
FOR_RUS: DEFB 128,129 ;START FROM 65
|
|
DEFB 150,132,133,148,131,149,136,137
|
|
DEFB 138,139,140,141,142,143,159,144
|
|
DEFB 145,146,147,134,130,156,155,135
|
|
DEFB 91
|
|
DEFB 154,93,94,95,158
|
|
DEFB 160,161
|
|
DEFB 230,164,165,228,163,229,168,169
|
|
DEFB 170,171,172,173,174,175,239,224
|
|
DEFB 225,226,227,166,162,236,235,167
|
|
DEFB 152,157,153,151
|
|
|
|
PRINBOX: PUSH IX
|
|
LD DE,(ETXS)
|
|
PUSH DE
|
|
LD HL,(EDITX)
|
|
LD DE,(EDITY)
|
|
LD BC,(EDITCX)
|
|
EXX
|
|
LD BC,12
|
|
EXX
|
|
LD A,(WRKSPC_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
LD A,(WTEXT_)
|
|
LD (BODY),A
|
|
POP HL
|
|
SH: LD BC,#0000
|
|
ADD HL,BC
|
|
LD A,(IX+1)
|
|
SUB C
|
|
EX DE,HL
|
|
LD XH,D
|
|
LD XL,E
|
|
CALL REALXX
|
|
LD B,A
|
|
PUSH BC
|
|
LD HL,(EDITX)
|
|
LD DE,(EDITY)
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
PUSH IX
|
|
CALL PCHARB
|
|
POP DE
|
|
POP BC
|
|
NPRINT: POP IX
|
|
EI
|
|
RET
|
|
|
|
SHIFT: EQU SH+1
|
|
|
|
CURSORH: LD A,(SHIFT)
|
|
LD C,A
|
|
LD A,(POSIT)
|
|
SUB C
|
|
LD BC,0
|
|
JR Z,HOM1
|
|
CALL LENSYM
|
|
HOM1: LD HL,(EDITX)
|
|
LD DE,(EDITY)
|
|
INC HL
|
|
INC HL
|
|
INC DE
|
|
INC DE
|
|
ADD HL,BC
|
|
LD BC,8
|
|
LD A,(WTEXT_)
|
|
JP VRLINE
|
|
|
|
REALXX: PUSH AF
|
|
PUSH DE
|
|
CALL LENSYM
|
|
LD HL,(EDITCX)
|
|
DEC HL
|
|
DEC HL
|
|
DEC HL
|
|
AND A
|
|
SBC HL,BC
|
|
POP DE
|
|
JP NC,REALXX2
|
|
POP AF
|
|
DEC A
|
|
JP REALXX
|
|
REALXX2: POP AF
|
|
RET
|
|
|
|
STEP: DEFB 1
|
|
|
|
EDITX: DEFW 0
|
|
EDITY: DEFW 0
|
|
EDITCX: DEFW 0
|
|
|
|
POSIT: DEFB #00
|
|
ETXS: DEFW 0
|
|
ETXE: DEFW 0
|
|
; +0 - Size buffer
|
|
; +1 - Amount simbols
|
|
; -1 - Scroll Window
|
|
|
|
|
|
; DE - ASCIIZ
|
|
; BC - LENGHT ASCIIZ IN PIXELS
|
|
|
|
LENSTR: LD H,FONTSIZ/256
|
|
LD BC,0
|
|
LENSTR1: LD A,(DE)
|
|
INC DE
|
|
OR A
|
|
RET Z
|
|
LD L,A
|
|
LD A,(HL)
|
|
ADD A,C
|
|
JR NC,LENSTR2
|
|
INC B
|
|
LENSTR2: LD C,A
|
|
JP LENSTR1
|
|
|
|
; DE - ASCII STRING
|
|
; A - SIZE STRING IN SIMBOLS
|
|
; BC - LENGHT STRING IN PIXELS
|
|
|
|
LENSYM: LD H,FONTSIZ/256
|
|
LD BC,0
|
|
LENSYM1: EX AF,AF'
|
|
LD A,(DE)
|
|
INC DE
|
|
LD L,A
|
|
LD A,(HL)
|
|
ADD A,C
|
|
JR NC,LENSYM2
|
|
INC B
|
|
LENSYM2: LD C,A
|
|
EX AF,AF'
|
|
DEC A
|
|
JP NZ,LENSYM1
|
|
RET
|
|
|
|
SYSCOLR:
|
|
SBAR_: DEFB GRAY
|
|
BUTTON_: DEFB GRAY
|
|
DESKTP_: DEFB GREEN
|
|
ACAPT_: DEFB BBLUE
|
|
ICAPT_: DEFB GRAY
|
|
WINDOW_: DEFB GRAY
|
|
LSHADW_: DEFB WHITE
|
|
DSHADW_: DEFB BLACK
|
|
SHADW_: DEFB DGRAY
|
|
WTEXT_: DEFB BLACK
|
|
BTEXT_: DEFB BLACK
|
|
CTEXT_: DEFB WHITE
|
|
GTEXT_: DEFB WHITE
|
|
WRKSPC_: DEFB WHITE
|
|
HLIGHP_: DEFB BBLUE
|
|
HLIGHI_: DEFB WHITE
|
|
|
|
|