промежуточное

This commit is contained in:
Anatoliy Belyanskiy 2023-08-08 23:58:38 +10:00
parent f6e41854a8
commit 1199181d53
5 changed files with 138 additions and 95 deletions

View File

@ -1 +1 @@
31
42

View File

@ -110,32 +110,51 @@ SCANKEY LD HL,HOST
;
IF CLASSIC_CURSOR ;------------------------------;
ECHOKEY:
CURCOUNT+1: LD A,#FF ;R01
INC A ;R01
LD (CURCOUNT),A ;R01
AND #FF ;R01
JR NZ,NOTUR ;R01
CURSYM+1: LD A,#00 ;R01
XOR #01 ;R01
LD (CURSYM),A ;R01
LD A," " ;R01
JR Z,CURSKI ;R01
LD A,"_" ;R01
CURSKI: CALL PUTCHAR ;R01
LD A,8 ;R01 BACKSPACE
CALL PUTCHAR ;R01
NOTUR: CALL SCANKEY
ECHOKEY: ;R01
.CURCOUNT+1: LD A,#FF
INC A
LD (.CURCOUNT),A
AND #FF
JR NZ,.NOTUR
.CURSYM+1: LD A,#00
XOR #01
LD (.CURSYM),A
CALL CURSOR
PUSH DE
LD A," "
JR Z,.CURSKI
LD A,"_"
.CURSKI: CALL PUTCHAR.NO_SCROLL ;R03
POP DE
CALL LOCATE
;LD A,8 ; BACKSPACE
;CALL PUTCHAR
.NOTUR: CALL SCANKEY
JR Z,ECHOKEY
PUSH DE
PUSH BC
PUSH AF ;R01
LD A," " ;R01
CALL PUTCHAR ;R01
LD A,8 ;R01 BACKSPACE
CALL PUTCHAR ;R01
POP AF ;R01
CALL PUTCHAR
PUSH AF
CALL CURSOR
PUSH DE
LD A," "
CALL PUTCHAR.NO_SCROLL ;R03
;LD A,8 ; BACKSPACE
;CALL PUTCHAR
POP DE
POP AF
PUSH DE
;R01 [v]
CALL PUTCHAR.NO_SCROLL
POP DE
CALL LOCATE
POP BC
POP DE
LD A,E
@ -159,9 +178,11 @@ ECHOKEY: CALL Cursor_On ;
PUSH AF
CALL Cursor_Off ; ¢ëª«. ªãàá®à
POP AF
OR A ; ¤®¡ ¢¨«
OR A
;!FIXIT scroll § ¬¥­¨âì ­  ¢ë¢®¤ ᨬ¢®«  ¡¨®á®¬ ¨«¨ WRCHAR
CALL NZ,PUTCHAR ; ¢ë¢®¤ "a" ­  íªà ­
; LD BC,1*256 + BIOS.LP_PRINT_SYM
; RST ToBIOS
CALL NZ,PUTCHAR.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" ­  íªà ­
;
POP BC
POP DE
@ -186,11 +207,16 @@ Cursor_On: LD C,BIOS.LP_GET_PLACE ; 㧭
JR Z,.put
LD B,CURSOR_ZG ; ç¥àâ 
LD A,(KEYFLAG) ; ä« £¨ ª« ¢ë
BIT 1,A ; ¡¨â Ins
;BIT 1,A ; ¡¨â Ins
AND %0000'0010 ; ¡¨â Ins
JR NZ,.put
LD B,INS_CUR_ZG ; ¡«®ª
.put: XOR A ; ­®¬¥à ®ª­ 
RST ToBIOS
LD DE,(Cursor_Off.pos)
CALL LOCATE
LD A,1
LD (Cursor_Off.Flag),A
LD A,delay_curs
@ -216,6 +242,10 @@ Cursor_Off:
XOR A
LD BC,NORM_ZG*256+BIOS.WIN_PUT_SYM ; ᨬ¢®« ­  íªà ­
RST ToBIOS
LD DE,(Cursor_Off.pos)
CALL LOCATE
RET
; ‚¥ªâ®à ®¡á«ã¦¨¢ ­¨ï ªãàá®à 

View File

@ -20,70 +20,38 @@ CLEAR: LD C,BIOS.LP_CLS_WIN2
; PRINT NULL-TERMINATED CHARS STRING
; HL - STRING POINTER
PCHARS: ;CALL CURSOR
;LD A,E
;LD (.start_x),A
PCHARS:
.loop: LD A,(HL)
INC HL
OR A
RET Z
;PUSH HL
;LD C,A
CALL PUTCHAR
;!TEST CR+LF+SCROLL
;CALL CURSOR
;LD A,(.start_x)
;CP E
;POP HL
;LD A,D ; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à 
;OR E ; ¢ á ¬®¥ ­ ç «® (X:Y == 0:0)
;CALL Z,PUTCHAR.LFF
;
JP .loop
NO_NEED_SCROLL: DB 1
BK_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
XOR A
CP E
JP Z,LOCATE
DEC E
JP LOCATE
;-----[]
LF_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD A,D
CP #1F
JR NC,LFF
INC D
IFN EnoughtOnly_LF
JP LOCATE
ELSE
CALL LOCATE
; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!!
ENDIF
CR_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD E,0
JP LOCATE
;-----[]
; PRINT CHAR
; A - CHAR
PUTCHAR:
;CP ' '
;JR NC,CHAR
;JR NC,.CHAR
CP #0D
JR Z,CR_
JR Z,.CR_
CP #0A
JR Z,LF_
JR Z,.LF_
CP #09
JR Z,TB_
JR Z,.TB_
CP #08
JR Z,BK_
JR Z,.BK_
CP #07
JR Z,.BELL
;SCF
;RET
CHAR:
LD BC,1*256 + BIOS.LP_PRINT_SYM
.CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
;!TEST CR+LF+SCROLL
;JP ToBIOS
RST ToBIOS
@ -93,13 +61,13 @@ CHAR:
OR E
RET NZ
;
LFF: PUSH HL ;!FIXIT á®åà ­ïâì ⥪ã騥 ¯à¥à뢠­¨ï
.LFF: PUSH HL ;!FIXIT á®åà ­ïâì ⥪ã騥 ¯à¥à뢠­¨ï
;PUSH DE
LD BC,1*256 + BIOS.LP_SCROLL_UD
LD DE,#0020
EI
HALT
DI
;EI
;HALT
;DI
RST ToBIOS
LD DE,#1F00
;PUSH DE
@ -107,17 +75,14 @@ LFF: PUSH HL ;!FIXIT
LD A,' '
LD BC,#50*256 + BIOS.LP_PRINT_SYM
RST ToBIOS
EI
;EI
;POP DE
LD DE,#1F00
CALL LOCATE
POP HL
RET
TB_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
.TB_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
IF TABisSPACES
LD B,E
LD A,E
@ -125,8 +90,8 @@ TB_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
ADD A,8
SUB B
LD B,A
LD C,BIOS.LP_PRINT_SYM
LD A,' '
LD C,BIOS.LP_PRINT_SYM
JP ToBIOS
ELSE
LD A,E
@ -135,6 +100,54 @@ TB_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
LD E,A
JP LOCATE
ENDIF
.BK_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
XOR A
CP E
;!TEST
;JP Z,LOCATE
RET Z
DEC E
JP LOCATE
.LF_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD A,D
CP #1F
JR NC,.LFF ;!FIXIT áà ¡ â뢠¥â ª ª CRLF ­ ¤® áªà®««¨âì á á®åà ­¥­¨¥¬ Y
INC D
IFN EnoughtOnly_LF
JP LOCATE
ELSE
CALL LOCATE
; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!!
ENDIF
.CR_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD E,0
JP LOCATE
.BELL: LD DE,1200
LD HL,4
JP BEEP
.NO_SCROLL:
;CP ' '
;JR NC,.CHAR
CP #0D
JR Z,.CR_
CP #0A
JR Z,.LF_
CP #09
JR Z,.TB_
CP #08
JR Z,.BK_
CP #07
JR Z,.BELL
;SCF
;RET
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
;!TEST CR+LF+SCROLL
JP ToBIOS
;RST ToBIOS
;-----[]
;
;

View File

@ -1 +1 @@
147
171

@ -1 +1 @@
Subproject commit 0277d424098318dc45617d6fb2c1cdf405c6d345
Subproject commit 7e4985b40214f573ba17b707ad5191319841acdd