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

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

View File

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