mirror of
https://github.com/Tolik-Trek/UserMenu.git
synced 2026-06-15 00:51:35 +03:00
398 lines
4.8 KiB
NASM
Executable File
398 lines
4.8 KiB
NASM
Executable File
;DEBUG
|
|
;////////
|
|
|
|
FVAR DB "1-ST VAR: ",0
|
|
SVAR DB "2-ND VAR: ",0
|
|
|
|
|
|
|
|
DEBUG_PRINTZ
|
|
LD (HL_D_POINT+1),HL
|
|
CALL PUSHALL
|
|
|
|
HL_D_POINT
|
|
LD HL,#0000
|
|
LD C,DSS_PCHARS
|
|
RST #10
|
|
CALL CRLF
|
|
|
|
CALL POPALL
|
|
RET
|
|
|
|
|
|
PUSHALL
|
|
EX (SP),HL ;PUSH HL & GET ADDRESS
|
|
PUSH DE
|
|
PUSH BC
|
|
PUSH AF
|
|
EXX
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
EXX
|
|
EX AF,AF'
|
|
PUSH AF
|
|
EX AF,AF'
|
|
PUSH IX
|
|
PUSH IY
|
|
JP (HL) ;JUMP TO ADDRESS (RET)
|
|
|
|
POPALL
|
|
POP HL ;GET ADDRESS
|
|
|
|
POP IY
|
|
POP IX
|
|
EX AF,AF'
|
|
POP AF
|
|
EX AF,AF'
|
|
EXX
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
EXX
|
|
POP AF
|
|
POP BC
|
|
POP DE
|
|
EX (SP),HL ;PUT ADDRESS
|
|
RET
|
|
;////////
|
|
;DEBUG
|
|
|
|
|
|
|
|
|
|
;SHOW WINDOW ARRAY
|
|
|
|
WIN_SHOW
|
|
LD DE,(WIN_XY)
|
|
LD A,(WIN_H)
|
|
LD H,A
|
|
LD A,(WIN_W)
|
|
LD L,A
|
|
IN A,(#E2)
|
|
LD B,A
|
|
LD C,DSS_WINREST
|
|
LD IX,MYWIN
|
|
DI
|
|
RST #10
|
|
EI
|
|
RET
|
|
|
|
|
|
SAVE_POSITION
|
|
DW 0
|
|
|
|
WIN_SAVE
|
|
LD C,DSS_CURSOR
|
|
RST #10
|
|
LD (SAVE_POSITION),DE
|
|
; RET
|
|
;
|
|
LD DE,(WIN_XY)
|
|
LD A,(WIN_H)
|
|
LD H,A
|
|
LD A,(WIN_W)
|
|
LD L,A
|
|
IN A,(#E2)
|
|
LD B,A
|
|
LD C,DSS_WINCOPY
|
|
LD IX,SCR_BUF
|
|
DI
|
|
RST #10
|
|
EI
|
|
RET
|
|
|
|
WIN_BACK
|
|
LD DE,(WIN_XY)
|
|
LD A,(WIN_H)
|
|
LD H,A
|
|
LD A,(WIN_W)
|
|
LD L,A
|
|
IN A,(#E2)
|
|
LD B,A
|
|
LD C,DSS_WINREST
|
|
LD IX,SCR_BUF
|
|
DI
|
|
RST #10
|
|
EI
|
|
|
|
LD DE,(SAVE_POSITION)
|
|
LD C,DSS_LOCATE
|
|
RST #10
|
|
RET
|
|
|
|
WIN_CLS
|
|
LD HL,0
|
|
LD BC,(WIN_W)
|
|
; INC BC
|
|
; INC BC
|
|
LD A,(WIN_H)
|
|
OR A
|
|
RET Z
|
|
MULHGT ADD HL,BC
|
|
DEC A
|
|
JR NZ,MULHGT
|
|
ADD HL,HL
|
|
DEC HL
|
|
DEC HL
|
|
PUSH HL
|
|
|
|
LD HL,MYWIN
|
|
LD D,H
|
|
LD E,L
|
|
LD A," "
|
|
LD (HL),A
|
|
INC HL
|
|
LD A,(SCR_ATTR)
|
|
LD (HL),A
|
|
INC HL
|
|
EX DE,HL
|
|
POP BC
|
|
LDIR
|
|
RET
|
|
|
|
WIN_XY
|
|
WIN_X DB #16
|
|
WIN_Y DB 10
|
|
WIN_H DW 7
|
|
WIN_W DW 34
|
|
|
|
WIN_ADDR
|
|
DW MYWIN
|
|
WIN_CUR_XY
|
|
DW 0
|
|
|
|
WIN_LOCATE
|
|
LD (WIN_CUR_XY),DE
|
|
LD HL,0
|
|
INC D
|
|
DEC D
|
|
JR Z,TOP_LN
|
|
LD BC,(WIN_W)
|
|
SLA C
|
|
ADDYC1 ADD HL,BC
|
|
DEC D
|
|
JR NZ,ADDYC1
|
|
TOP_LN SLA E
|
|
ADD HL,DE
|
|
LD DE,MYWIN
|
|
ADD HL,DE
|
|
LD (WIN_ADDR),HL
|
|
RET
|
|
|
|
WIN_PCHARS
|
|
LD A,(HL)
|
|
INC HL
|
|
OR A
|
|
RET Z
|
|
CP 13
|
|
JR Z,CR_L
|
|
CP 10
|
|
JR Z,LF_L
|
|
CALL WIN_PUTCHAR
|
|
JR WIN_PCHARS
|
|
|
|
CR_L LD DE,(WIN_CUR_XY)
|
|
LD D,0
|
|
PUSH HL
|
|
CALL WIN_LOCATE
|
|
POP HL
|
|
JR WIN_PCHARS
|
|
|
|
LF_L LD DE,(WIN_CUR_XY)
|
|
INC E
|
|
PUSH HL
|
|
CALL WIN_LOCATE
|
|
POP HL
|
|
JR WIN_PCHARS
|
|
|
|
WIN_PUTCHAR
|
|
LD DE,(WIN_ADDR)
|
|
LD (DE),A
|
|
INC DE
|
|
INC DE
|
|
LD (WIN_ADDR),DE
|
|
RET
|
|
|
|
CRLF LD A,#0D
|
|
LD C,DSS_PUTCHAR
|
|
RST #10
|
|
LD A,#0A
|
|
LD C,DSS_PUTCHAR
|
|
RST #10
|
|
RET
|
|
|
|
MESSAGE LD E,A
|
|
LD D,0
|
|
CALL MESAGE
|
|
CALL PRINTZ
|
|
RET
|
|
|
|
MESAGE INC DE
|
|
LD HL,MSG0
|
|
LD BC,MSG1-MSG0
|
|
LCPIR2 XOR A
|
|
CPIR
|
|
RET PO
|
|
RET NZ
|
|
DEC DE
|
|
LD A,D
|
|
OR E
|
|
JP NZ,LCPIR2
|
|
RET
|
|
|
|
PRINTZ LD A,(HL)
|
|
INC HL
|
|
OR A
|
|
RET Z
|
|
CP "%"
|
|
JR NZ,PRINTZ2
|
|
LD A,(HL)
|
|
INC HL
|
|
SUB "1"
|
|
PUSH HL
|
|
LD L,A
|
|
LD H,0
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
LD BC,PRM1
|
|
ADD HL,BC
|
|
LD C,DSS_PCHARS
|
|
RST #10
|
|
POP HL
|
|
JR PRINTZ
|
|
PRINTZ2 LD C,DSS_PUTCHAR
|
|
RST #10
|
|
JP PRINTZ
|
|
|
|
LOCATE_
|
|
LD C,DSS_LOCATE
|
|
RST #10
|
|
RET
|
|
|
|
PRINT_A
|
|
PRINT_ LD C,DSS_PUTCHAR
|
|
RST #10
|
|
RET
|
|
|
|
MOVEBLOCKZ
|
|
LD BC,255
|
|
JR PUTPRMA
|
|
|
|
PUTVAR LD DE,PRM1
|
|
PUTPRM LD BC,15
|
|
PUTPRMA LD A,(HL)
|
|
LDI
|
|
RET PO
|
|
OR A
|
|
JR NZ,PUTPRMA
|
|
RET
|
|
|
|
PRM1 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM2 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM3 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM4 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM5 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM6 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM7 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM8 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM9 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
|
|
; PRINT MODULE
|
|
|
|
DUMP LD B,2
|
|
DUMPLP1 PUSH BC
|
|
PUSH HL
|
|
CALL CRLF
|
|
POP HL
|
|
CALL PHEXSTR
|
|
POP BC
|
|
DJNZ DUMPLP1
|
|
CALL CRLF
|
|
RET
|
|
|
|
PHEX LD E,A
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
AND #0F
|
|
ADD A,#30
|
|
CP #3A
|
|
JR C,PHEX2
|
|
ADD A,7
|
|
PHEX2 CALL PRINT_
|
|
LD A,E
|
|
AND #0F
|
|
ADD A,#30
|
|
CP #3A
|
|
JR C,PHEX3
|
|
ADD A,7
|
|
PHEX3 CALL PRINT_
|
|
RET
|
|
|
|
PHEXSTR LD B,#10
|
|
PHS1 PUSH BC
|
|
LD A,(HL)
|
|
CALL PHEX
|
|
LD A,#20
|
|
CALL PRINT_
|
|
POP BC
|
|
INC HL
|
|
DJNZ PHS1
|
|
RET
|
|
|
|
PRINTNUM
|
|
LD HL,PRM1
|
|
NUMC LD C,"0"-1
|
|
NUMC1 INC C
|
|
SUB 100
|
|
JR NC,NUMC1
|
|
ADD A,100
|
|
LD (HL),C
|
|
INC HL
|
|
NUMB LD C,"0"-1
|
|
NUMB1 INC C
|
|
SUB 10
|
|
JR NC,NUMB1
|
|
ADD A,10
|
|
ADD A,"0"
|
|
LD (HL),C
|
|
INC HL
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),0
|
|
RET
|
|
|
|
PRINT99 LD L,A
|
|
LD H,0
|
|
JR PRL99
|
|
|
|
PRINTHL
|
|
LD DE,10000
|
|
CALL DIGIT
|
|
LD DE,1000
|
|
CALL DIGIT
|
|
LD DE,100
|
|
CALL DIGIT
|
|
PRL99 LD DE,10
|
|
CALL DIGIT
|
|
LD A,"0"
|
|
ADD A,L
|
|
JP PRINT_A
|
|
|
|
|
|
DIGIT LD B,#FF
|
|
PH1 INC B
|
|
AND A
|
|
SBC HL,DE
|
|
JR NC,PH1
|
|
ADD HL,DE
|
|
LD A,"0"
|
|
ADD A,B
|
|
JP PRINT_A
|
|
|