ковыряния LP_PR_LINE_DIR

This commit is contained in:
Tolik 2025-03-23 00:18:58 +10:00
parent 2b6500cb5c
commit 9710fd7a29
4 changed files with 293 additions and 197 deletions

@ -1 +1 @@
Subproject commit 840faf40250ec41742e4da3c1f68077ba78a2dc6 Subproject commit 7c03abc82040df54cec2bc6701b0f602fa08fd26

View File

@ -209,7 +209,7 @@ TAB_FNS:
DB low FN_LIB ; #DE DB low FN_LIB ; #DE
DB low FN_LIB ; #DF DB low FN_LIB ; #DF
; Ex ; Ex
DB low LP_PR_LINE_DIR ; #E0 DB low LP_PR_LINE_DIR.START ; #E0
DB low FN_RESERVED ; #E1 DB low FN_RESERVED ; #E1
DB low FN_RESERVED ; #E2 DB low FN_RESERVED ; #E2
DB low FN_RESERVED ; #E3 DB low FN_RESERVED ; #E3
@ -401,7 +401,7 @@ TAB_FNS:
DB high FN_LIB DB high FN_LIB
DB high FN_LIB DB high FN_LIB
; Ex ; Ex
DB high LP_PR_LINE_DIR DB high LP_PR_LINE_DIR.START
DB high FN_RESERVED DB high FN_RESERVED
DB high FN_RESERVED DB high FN_RESERVED
DB high FN_RESERVED DB high FN_RESERVED

View File

@ -337,6 +337,7 @@ FDD_5x_WRITE:
;Return: ;Return:
; HL:IX - Sector + Sector counter ; HL:IX - Sector + Sector counter
; DE - Address + (Sector counter * Size sector) ; DE - Address + (Sector counter * Size sector)
;?? B - Sector counter
;[]===========================================================[] ;[]===========================================================[]
FDD_5x_LONG_WRITE: FDD_5x_LONG_WRITE:
CALL SAVE_INTERRUPTS.switch_off CALL SAVE_INTERRUPTS.switch_off
@ -421,11 +422,21 @@ FDD_5x_LONG_WRITE:
JR NZ,.ADW8BIT JR NZ,.ADW8BIT
INC B INC B
.ADW8BIT: ADD IX,BC .ADW8BIT: ADD IX,BC
LD BC,0 ;!TEST
ADC HL,BC ;LD BC,0
;ADC HL,BC
;LD B,A
;XOR A
;RET
;
LD B,A LD B,A
RET NC
INC HL
XOR A XOR A
RET RET
;
; ;
;------------------------------- ;-------------------------------

View File

@ -76,6 +76,11 @@
.LLL: ; .LLL: ;
ENDM ENDM
MACRO DJNZ_NEXT_HL_ADDR addr
DJNZ addr
CALL LP_NEXT_HL_DIR
ENDM
;********************************* ;*********************************
@ -468,7 +473,7 @@ CLS_WIN: CALL LP_BEG_P
PUSH DE PUSH DE
; ;
.loop1: CALL LP_AT_D .loop1: CALL LP_AT_D
CALL LP_TAB_E ;CALL LP_TAB_E
PUSH DE PUSH DE
EXX EXX
LD BC,(SYS_PAGE.SYS_WORK1) LD BC,(SYS_PAGE.SYS_WORK1)
@ -659,20 +664,86 @@ LP_TAB_E: LD A,(WIN_ID_0.SIZE_REL)
RET RET
;************************************************************* ;*************************************************************
LP_NEXT_HL_DIR: LD A,SYS_PAGE
OUT (SLOT3),A
LD A,4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
ADD L
LD L,A
LD A,(WIN_ID_0.V_END)
CP L
CALL C,.end_line
;
.no_end_line: LD A,(WIN_ID_0.H_BEG)
LD D,A
LD A,(WIN_ID_0.SIZE_REL)
LD B,A
RET
;
.end_line: LD A,L
SUB 4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
LD L,A
PUSH HL
PUSH BC
PUSH DE
EXX
PUSH BC
PUSH DE
PUSH HL
LD A,(WIN_ID_0.USER.SIZE_V)
LD B,A
CALL LP_SCROLL_UP.RUN
EXX
LD C," "
;
LD HL,(WIN_ID_0.V_END)
DEC L
DEC L
DEC L
LD H,#C3
;
LD A,(WIN_ID_0.H_BEG)
LD D,A
;
LD A,#50
OUT (SLOT3),A
;
EXX
LD A,(WIN_ID_0.SIZE_REL)
LD B,A
;
.loop_cl_line: EXX
LD A,D
OUT (PORT_Y),A
LD (HL),C
INC D
TEST_SCR_40
EXX
DJNZ .loop_cl_line
;
POP HL
POP DE
POP BC
EXX
POP DE
POP BC
POP HL
;
LD A,SYS_PAGE
OUT (SLOT3),A
RET
; ¢ëç¨á«¥­¨¥ ­®¢®£® ¬¥áâ  ; ¢ëç¨á«¥­¨¥ ­®¢®£® ¬¥áâ 
LP_NEXT_HL: LD A,SYS_PAGE LP_NEXT_HL: LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
INC L LD A,4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
INC L ADD L
INC L LD L,A
INC L
LD A,(WIN_ID_0.V_END) LD A,(WIN_ID_0.V_END)
CP L CP L
JR NC,.no_end_line JR C,.end_line
; ;
LD HL,(WIN_ID_0.V_BEG)
INC L
LD H,#C3 ;!HARDCODE
.no_end_line: LD A,(WIN_ID_0.H_BEG) .no_end_line: LD A,(WIN_ID_0.H_BEG)
LD D,A LD D,A
LD A,(WIN_ID_0.SIZE_REL) LD A,(WIN_ID_0.SIZE_REL)
@ -680,6 +751,11 @@ LP_NEXT_HL: LD A,SYS_PAGE
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
RET RET
;
.end_line: LD HL,(WIN_ID_0.V_BEG)
INC L
LD H,#C3 ;!HARDCODE
JP .no_end_line
; !®¦¨¤ ¥âáï, çâ® ¯®àâïâáï ⮫쪮  «ìâ¥à­ â¨¢­ë¥ ॣ¨áâàë ¨ â¥, çâ® ª ª ¯ à ¬¥âàë ­  ¢å®¤¥ ; !®¦¨¤ ¥âáï, çâ® ¯®àâïâáï ⮫쪮  «ìâ¥à­ â¨¢­ë¥ ॣ¨áâàë ¨ â¥, çâ® ª ª ¯ à ¬¥âàë ­  ¢å®¤¥
LP_BEG_P: EX AF,AF' LP_BEG_P: EX AF,AF'
@ -1576,22 +1652,48 @@ WIN_RESTORE: AND A
;!FIXIT ­¥â ®¯¨á ­¨ï, ­¥¤®¤¥« ­ . <20>¥ç âì á ã¯à ¢«ïî騬¨ ᨬ¢®« ¬¨ ;!FIXIT ­¥â ®¯¨á ­¨ï, ­¥¤®¤¥« ­ . <20>¥ç âì á ã¯à ¢«ïî騬¨ ᨬ¢®« ¬¨
;------------------------------------------------------------------[#E0] ;------------------------------------------------------------------[#E0]
LP_PR_LINE_DIR:
;!TODO ­¥¤®¤¥« ­ 
.BELL: ; ...
; ...
JR .loop
;!TODO ­¥¤®¤¥« ­ 
.BACK: LD A,SYS_PAGE
OUT (SLOT3),A
;
LD A,(WIN_ID_0.H_BEG)
CP D
JR Z,.next_full ;!FIXIT ¢®§¬®¦­®, çâ® ­¥ á
INC B
DEC D
JR .next_full ;!FIXIT ¢®§¬®¦­®, çâ® ­¥ á
;
.EXIT: POP IX
JP LP_END_P
;;;;;;;;;;;;;;;;;
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥ ; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥
; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®© ; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
; B - à §¤¥«¨â¥«ì ; B - à §¤¥«¨â¥«ì
LP_PR_LINE_DIR: ;;;;;;;;;;;;;;;;;
.START: PUSH IX
IN A,(SLOT3)
LD C,A
CALL LP_BEG_P CALL LP_BEG_P
LD A,#50 ; LD A,#50
OUT (SLOT3),A ; OUT (SLOT3),A
;
.loop: EXX EXX
LD A,D .loop: LD A,D
OUT (PORT_Y),A OUT (PORT_Y),A
EXX EXX
LD A,C
OUT (SLOT3),A
;
LD A,(HL) LD A,(HL)
LD XH,A
INC HL INC HL
CP B CP B
JR Z,.exit JP Z,.EXIT
EXX EXX
; ¯¥ç â ¥¬ë¥ ᨬ¢®«ë ; ¯¥ç â ¥¬ë¥ ᨬ¢®«ë
CP 14 CP 14
@ -1600,59 +1702,31 @@ LP_PR_LINE_DIR:
JR C,.print JR C,.print
; ã¯à ¢«ïî騥 ᨬ¢®«ë ; ã¯à ¢«ïî騥 ᨬ¢®«ë
SUB 7 SUB 7
JR Z,LP_BELL ; A = 07 "BELL" JR Z,.BELL ; A = 07 "BELL"
DEC A DEC A
JR Z,LP_BACK ; A = 08 "Backspace" JR Z,.BACK ; A = 08 "Backspace"
DEC A DEC A
JR Z,LP_TAB ; A = 09 "TAB" JR Z,.TAB ; A = 09 "TAB"
DEC A DEC A
JR Z,LP_LF ; € = 10 "Line Feed" JR Z,.LineFeed ; € = 10 "Line Feed"
DEC A DEC A
JR Z,.VT ; € = 11 "Vertical Tabulation" = "Line Feed", ¥á«¨ LF à ¡®â ¥â ª ª CRLF JR Z,.VertTab ; € = 11 "Vertical Tabulation"
DEC A DEC A
JR Z,LP_CLS ; € = 12 "Form feed" - à §àë¢ áâà ­¨æë, ­ ç «® ­®¢®£® «¨áâ , ¬®¦¥â à ¡®â âì ª ª VT JR Z,.CLS ; € = 12 "Form feed" - à §àë¢ áâà ­¨æë, ­ ç «® ­®¢®£® «¨áâ , ¬®¦¥â à ¡®â âì ª ª VT
DEC A DEC A
JR Z,LP_CR ; € = 13 "Carriage Return" JR Z,.CR ; € = 13 "Carriage Return"
;
; ¢ë¢®¤¨âì! ; ¢ë¢®¤¨âì!
.VT: ; ... ;
; ... .print: LD A,#50
.print: LD (HL),A OUT (SLOT3),A
LD A,XH
LD (HL),A
INC D INC D
.next_full: TEST_SCR_40
.next: ; ... .next: DJNZ_NEXT_HL_ADDR .loop
; ...
TEST_SCR_40
DJNZ_NEXT_HL
EXX
JR .loop JR .loop
;-------[TAB] ;!FIXIT § ¯®«­ï¥â ¯à®¡¥« ¬¨
.exit: JP LP_END_P .TAB: LD A,SYS_PAGE
;
;
LP_PRINT_LN_D11:
LD A,#50
OUT (SLOT3),A
JR LP_PR_LINE_DIR.next
;!TODO ­¥¤®¤¥« ­ 
LP_BELL:
JR LP_PR_LINE_DIR.next
LP_BACK:
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(WIN_ID_0.H_BEG)
CP D
JR Z,LP_PRINT_LN_D11
INC B
DEC D
JR LP_PRINT_LN_D11
;-------[TAB]
LP_TAB: LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(WIN_ID_0.H_BEG) LD A,(WIN_ID_0.H_BEG)
SUB D SUB D
@ -1663,74 +1737,85 @@ LP_TAB: LD A,SYS_PAGE
LD C,A LD C,A
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
;
.loop: LD (HL),' ' .loop_tab: LD (HL),' '
INC D INC D
DEC B DEC B
JR Z,.end_Line JR Z,.end_Line
DEC C DEC C
JR NZ,.loop JR NZ,.loop_tab
JR .next_full
JR LP_PR_LINE_DIR.next ;
.end_Line: .end_Line: LD A,SYS_PAGE
LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(WIN_ID_0.H_BEG) LD A,(WIN_ID_0.H_BEG)
LD D,A LD D,A
LD A,(WIN_ID_0.SIZE_REL) LD A,(WIN_ID_0.SIZE_REL)
LD B,A LD B,A
;JP LP_LF JP .LineFeed_go
;-------[TAB end] ;-------[TAB end]
LP_LF: LD A,SYS_PAGE ;
;-------[Line Feed]
.VertTab: ;
.LineFeed: LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
;
INC L .LineFeed_go: LD A,4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
INC L ADD L
INC L LD L,A
INC L ;
LD A,(WIN_ID_0.V_END) LD A,(WIN_ID_0.V_END)
CP L CP L
JR NC,LP_PRINT_LN_D11 CALL C,LP_NEXT_HL_DIR.end_line
;!TEST BIOS SCROLL ;!TEST BIOS SCROLL
;LD A,(WIN_ID_0.V_BEG)
;LD L,A ; ¢¥à­ãâìáï ­ ¢¥àå ¡¥§ áªà®«« !!!
;-------------------------------------------------------------\ ;-------------------------------------------------------------\
PUSH HL ; LD A,L
PUSH BC ; SUB 4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
EXX ; LD L,A
PUSH BC ; PUSH HL
PUSH DE ; PUSH BC
EXX ; PUSH DE
; EXX
LD A,(WIN_ID_0.USER.SIZE_V) ; PUSH BC
LD B,A ; PUSH DE
CALL LP_SCROLL_UP.RUN ; PUSH HL
; ;EXX
EXX ; LD A,(WIN_ID_0.USER.SIZE_V)
POP DE ; LD B,A
POP BC ; CALL LP_SCROLL_UP.RUN
EXX ; ;EXX
POP BC ; POP HL
POP HL ; POP DE
; POP BC
; EXX
; POP DE
; POP BC
; POP HL
;-------------------------------------------------------------/ ;-------------------------------------------------------------/
;LD HL,(WIN_ID_0.H_BEG - 1)
;LD L,A ; WIN_ID_0.V_END - ¢¥à­ãâìáï ­ ¢¥àå ¡¥§ áªà®«« !!!
; ;
; scrolling ???? ;!TODO CALL clear_last_line_1F
JR LP_PRINT_LN_D11 ; .SetPage_Loop: LD A,#50
; OUT (SLOT3),A
LP_CLS: ; ... JP .loop
; scrolling ???? ;-------[Line Feed end]
JR LP_PR_LINE_DIR.next ;
.CLS: ; ...
LP_CR: LD A,SYS_PAGE ;!TODO CLS
JP .loop
;
.CR: LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
;
LD A,(WIN_ID_0.H_BEG) LD A,(WIN_ID_0.H_BEG)
LD D,A LD D,A
LD A,(WIN_ID_0.SIZE_REL) LD A,(WIN_ID_0.SIZE_REL)
LD B,A LD B,A
;
JR LP_PRINT_LN_D11 ;LD A,#50
;OUT (SLOT3),A
JP .loop
;------------------------------------------------------------------[#E0] ;------------------------------------------------------------------[#E0]
@ -1823,43 +1908,43 @@ LP_SCR_MNU:
; DB 40,32,0,0,#1B,0,0,0 ; DB 40,32,0,0,#1B,0,0,0
; DB 0,0,0,0,0,0,0,0 ; DB 0,0,0,0,0,0,0,0
; LP_S %01100010,40,#4000 ; LP_S %0110'0010,40,#4000
; LP_S %01100010,40,#4028 ; LP_S %0110'0010,40,#4028
; LP_S %01100010,40,#4050 ; LP_S %0110'0010,40,#4050
; LP_S %01100010,40,#4078 ; LP_S %0110'0010,40,#4078
; LP_S %01100010,40,#40A0 ; LP_S %0110'0010,40,#40A0
; LP_S %01100010,40,#40C8 ; LP_S %0110'0010,40,#40C8
; ;
; LP_S %01100010,40,#4800 ; LP_S %0110'0010,40,#4800
; LP_S %01100010,40,#4828 ; LP_S %0110'0010,40,#4828
; LP_S %01100010,40,#4850 ; LP_S %0110'0010,40,#4850
; LP_S %01100010,40,#4878 ; LP_S %0110'0010,40,#4878
; LP_S %01100010,40,#48A0 ; LP_S %0110'0010,40,#48A0
; LP_S %01100010,40,#48C8 ; LP_S %0110'0010,40,#48C8
; ;
; LP_S %01100010,40,#5000 ; LP_S %0110'0010,40,#5000
; LP_S %01100010,40,#5028 ; LP_S %0110'0010,40,#5028
; LP_S %01100010,40,#5050 ; LP_S %0110'0010,40,#5050
; LP_S %01100010,40,#5078 ; LP_S %0110'0010,40,#5078
; LP_S %01100010,40,#50A0 ; LP_S %0110'0010,40,#50A0
; LP_S %01100010,40,#50C8 ; LP_S %0110'0010,40,#50C8
; ;
; LP_S %01100100,40,#4000 ; LP_S %0110'0100,40,#4000
; LP_S %01100100,40,#4028 ; LP_S %0110'0100,40,#4028
; LP_S %01100100,40,#4050 ; LP_S %0110'0100,40,#4050
; LP_S %01100100,40,#4078 ; LP_S %0110'0100,40,#4078
; LP_S %01100100,40,#40A0 ; LP_S %0110'0100,40,#40A0
; LP_S %01100100,40,#40C8 ; LP_S %0110'0100,40,#40C8
; ;
; LP_S %01100100,40,#4800 ; LP_S %0110'0100,40,#4800
; LP_S %01100100,40,#4828 ; LP_S %0110'0100,40,#4828
; LP_S %01100100,40,#4850 ; LP_S %0110'0100,40,#4850
; LP_S %01100100,40,#4878 ; LP_S %0110'0100,40,#4878
; LP_S %01100100,40,#48A0 ; LP_S %0110'0100,40,#48A0
; LP_S %01100100,40,#48C8 ; LP_S %0110'0100,40,#48C8
; ;
; LP_S %01100100,40,#5000 ; LP_S %0110'0100,40,#5000
; LP_S %01100100,40,#5028 ; LP_S %0110'0100,40,#5028
; ;
; DEFB #FF,0,0,0 ; DEFB #FF,0,0,0
; ;