ковыряния 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 ; #DF
; 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 ; #E2
DB low FN_RESERVED ; #E3
@ -401,7 +401,7 @@ TAB_FNS:
DB high FN_LIB
DB high FN_LIB
; 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

View File

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

View File

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