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