восстановление работы с txt 40x32

This commit is contained in:
Tolik 2025-03-25 01:04:36 +10:00
parent 9710fd7a29
commit ba3112f006

View File

@ -63,7 +63,7 @@
; H - ¢ëá®â , L - è¨à¨­  ; H - ¢ëá®â , L - è¨à¨­ 
;============================================================= ;=============================================================
MACRO TEST_SCR_40 ;[x] ¢ª«î稫 31/10/23, ç¨áâ® ­  •í««®ããã㨨¨­ MACRO CORRECT_SCR_40 ;[x] ¢ª«î稫 31/10/23, ç¨áâ® ­  •í««®ããã㨨¨­
EX AF,AF' EX AF,AF'
JR C,.LLL JR C,.LLL
INC D ; ०¨¬ 40 INC D ; ०¨¬ 40
@ -156,7 +156,7 @@ LP_PRINT_ALL: CALL LP_BEG_P
INC L INC L
LD (HL),A LD (HL),A
DEC L DEC L
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -179,7 +179,7 @@ LP_PRINT_SYM: CALL LP_BEG_P
OUT (PORT_Y),A OUT (PORT_Y),A
.cont: LD (HL),C .cont: LD (HL),C
INC D INC D
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -204,7 +204,7 @@ LP_PRINT_ATR: CALL LP_BEG_P
INC L INC L
LD (HL),C LD (HL),C
DEC L DEC L
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -237,7 +237,7 @@ LP_PRINT_LINE: CALL LP_BEG_P
INC L INC L
LD (HL),A LD (HL),A
DEC L DEC L
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -262,7 +262,7 @@ LP_PRINT_LINE2: CALL LP_BEG_P
OUT (C),D OUT (C),D
INC D INC D
LD (HL),A LD (HL),A
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -274,8 +274,7 @@ LP_PRINT_LINE2: CALL LP_BEG_P
; ;
;------------------------------------------------------------------[#87] ;------------------------------------------------------------------[#87]
LP_PRINT_LINE3: LP_PRINT_LINE3: CALL LP_BEG_P
CALL LP_BEG_P
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
; ;
@ -302,7 +301,7 @@ LP_PRINT_LINE3:
INC L INC L
LD (HL),A LD (HL),A
DEC L DEC L
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -312,8 +311,7 @@ LP_PRINT_LINE3:
; ;
;------------------------------------------------------------------[#88] ;------------------------------------------------------------------[#88]
LP_PRINT_LINE4: LP_PRINT_LINE4: CALL LP_BEG_P
CALL LP_BEG_P
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
; ;
@ -334,7 +332,7 @@ LP_PRINT_LINE4:
.NoEndSymbol: EXX .NoEndSymbol: EXX
LD (HL),A LD (HL),A
INC D INC D
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -344,8 +342,7 @@ LP_PRINT_LINE4:
; ;
;------------------------------------------------------------------[#8B] ;------------------------------------------------------------------[#8B]
LP_PRINT_LINE5: LP_PRINT_LINE5: CALL LP_BEG_P
CALL LP_BEG_P
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
; ;
@ -367,7 +364,7 @@ LP_PRINT_LINE5:
LD (HL),A LD (HL),A
DEC L DEC L
INC D INC D
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -414,7 +411,7 @@ LP_PRINT_LINE6: CALL LP_BEG_P
EXX EXX
LD (HL),A LD (HL),A
INC D INC D
TEST_SCR_40 CORRECT_SCR_40
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -429,8 +426,7 @@ LP_PRINT_LINE6: CALL LP_BEG_P
;------------------------------------------------------------------[#84] ;------------------------------------------------------------------[#84]
; ¯®àâïâáï ⮫쪮  «ìâ¥à­ â¨¢­ë¥ ॣ¨áâàë ¨ â¥, çâ® ª ª ¯ à ¬¥âàë ­  ¢å®¤¥ ; ¯®àâïâáï ⮫쪮  «ìâ¥à­ â¨¢­ë¥ ॣ¨áâàë ¨ â¥, çâ® ª ª ¯ à ¬¥âàë ­  ¢å®¤¥
LP_SET_PLACE: CALL LP_BEG_P LP_SET_PLACE: CALL LP_BEG_P
CALL LP_AT_D CALL LP_SET_CUR
;CALL LP_TAB_E
JP LP_END_P.SYS_PAGE JP LP_END_P.SYS_PAGE
;------------------------------------------------------------------[#84] ;------------------------------------------------------------------[#84]
; ;
@ -442,6 +438,15 @@ LP_GET_PLACE: CALL LP_BEG_P
NEG NEG
EXX EXX
ADD A,D ADD A,D
;
EX AF,AF'
JR C,.LLL
EX AF,AF'
AND A
RRA ; ०¨¬ txt 40
EX AF,AF'
.LLL: EX AF,AF'
;
EXX EXX
LD E,A LD E,A
LD A,(WIN_ID_0.V_BEG) LD A,(WIN_ID_0.V_BEG)
@ -472,8 +477,7 @@ CLS_WIN: CALL LP_BEG_P
LD (SYS_PAGE.SYS_WORK1),BC ; á®åà ­¨âì æ¢¥â LD (SYS_PAGE.SYS_WORK1),BC ; á®åà ­¨âì æ¢¥â
PUSH DE PUSH DE
; ;
.loop1: CALL LP_AT_D .loop1: CALL LP_SET_CUR
;CALL LP_TAB_E
PUSH DE PUSH DE
EXX EXX
LD BC,(SYS_PAGE.SYS_WORK1) LD BC,(SYS_PAGE.SYS_WORK1)
@ -501,8 +505,7 @@ CLS_WIN: CALL LP_BEG_P
JR NZ,.loop1 JR NZ,.loop1
; ;
POP DE POP DE
CALL LP_AT_D CALL LP_SET_CUR
;CALL LP_TAB_E
JP LP_END_P.SYS_PAGE JP LP_END_P.SYS_PAGE
;-------------------------------------------------------------[#89, #8D] ;-------------------------------------------------------------[#89, #8D]
; ;
@ -616,19 +619,24 @@ LP_SIZE: CALL LP_OPEN_PG
; ;
; ®¦¨¤ ¥âáï, çâ® ¯®àâïâáï ⮫쪮  «ìâ¥à­ â¨¢­ë¥ ॣ¨áâàë ¨ â¥, çâ® ª ª ¯ à ¬¥âàë ­  ¢å®¤¥ ; ®¦¨¤ ¥âáï, çâ® ¯®àâïâáï ⮫쪮  «ìâ¥à­ â¨¢­ë¥ ॣ¨áâàë ¨ â¥, çâ® ª ª ¯ à ¬¥âàë ­  ¢å®¤¥
LP_AT_D: LD A,(WIN_ID_0.USER.SIZE_V) ; ãáâ ­®¢¨âì ªãàá®à:
; D - ­®¬¥à ᨬ¢®«  ¯® ¢¥à⨪ «¨
; E - ­®¬¥à ᨬ¢®«  ¯® £®à¨§®­â «¨
LP_SET_CUR: ; LP_AT_D:
LD A,(WIN_ID_0.USER.SIZE_V)
EXX EXX
LD L,A LD L,A
EXX EXX
LD A,D LD A,D
EXX EXX
.loop: SUB L .loop_x: SUB L
JR NC,.loop JR NC,.loop_x
; ;
ADD A,L ADD A,L
ADD A,A ADD A,A
ADD A,A ADD A,A
LD L,A LD L,A
;
LD A,(WIN_ID_0.V_BEG) LD A,(WIN_ID_0.V_BEG)
ADD A,L ADD A,L
LD L,A LD L,A
@ -636,27 +644,35 @@ LP_AT_D: LD A,(WIN_ID_0.USER.SIZE_V)
LD H,#C3 LD H,#C3
EXX EXX
;RET ;RET
LP_TAB_E: LD A,(WIN_ID_0.SIZE_REL) ;
;LP_TAB_E:
LD A,(WIN_ID_0.SIZE_REL)
EXX EXX
LD D,A LD D,A
EXX EXX
LD A,E LD A,E
EXX EXX
.loop: SUB D .loop_y: SUB D
JR NC,.loop JR NC,.loop_y
JR Z,.loop JR Z,.loop_y
; ;
NEG NEG
LD B,A ; á®åà ­¨âì ᪮«ìª® ®áâ «®áì ᨬ¢®«®¢ ¢ áâப¥ LD B,A ; á®åà ­¨âì ᪮«ìª® ®áâ «®áì ᨬ¢®«®¢ ¢ áâப¥
NEG NEG
ADD A,D ADD A,D
LD D,A LD D,A
LD A,(WIN_ID_0.USER.MODE) ;
AND %0010'0000 EX AF,AF'
JR Z,.skip_Dx2 JR C,.LLL
LD A,D SLA D ; ०¨¬ txt 40
ADD A,A .LLL: EX AF,AF'
LD D,A ;LD A,(WIN_ID_0.USER.MODE)
;AND %0010'0000
;JR Z,.skip_Dx2
;LD A,D
;ADD A,A
;LD D,A
;
.skip_Dx2: LD A,(WIN_ID_0.H_BEG) .skip_Dx2: LD A,(WIN_ID_0.H_BEG)
ADD A,D ADD A,D
LD D,A LD D,A
@ -692,6 +708,7 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
PUSH HL PUSH HL
LD A,(WIN_ID_0.USER.SIZE_V) LD A,(WIN_ID_0.USER.SIZE_V)
LD B,A LD B,A
LD E,0 ; ¢áî áâப㠮ª­  áªà®««¨¬
CALL LP_SCROLL_UP.RUN CALL LP_SCROLL_UP.RUN
EXX EXX
LD C," " LD C," "
@ -700,7 +717,7 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
DEC L DEC L
DEC L DEC L
DEC L DEC L
LD H,#C3 LD H,#C3 ;!HARDCODE ᬥ饭¨¥ ¢ áâà ­¨æ¥ 3 ª ­ ç «ã ®¯¨á â¥«¥© íªà ­ 
; ;
LD A,(WIN_ID_0.H_BEG) LD A,(WIN_ID_0.H_BEG)
LD D,A LD D,A
@ -717,7 +734,7 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
OUT (PORT_Y),A OUT (PORT_Y),A
LD (HL),C LD (HL),C
INC D INC D
TEST_SCR_40 CORRECT_SCR_40
EXX EXX
DJNZ .loop_cl_line DJNZ .loop_cl_line
; ;
@ -1256,8 +1273,7 @@ LP_MODE_LINE: BIT 0,(IX+Window_Variables.USER.MODE_S)
;***************************************************************** ;*****************************************************************
LP_SCROLL_UD: LP_SCROLL_UD: DEC B
DEC B
JR Z,LP_SCROLL_UP JR Z,LP_SCROLL_UP
DEC B DEC B
JR Z,LP_SCROLL_DN JR Z,LP_SCROLL_DN
@ -1270,61 +1286,59 @@ LP_SCROLL_UD:
LP_SCROLL_UP: DEC E LP_SCROLL_UP: DEC E
RET Z RET Z
CALL LP_OPEN_PG CALL LP_OPEN_PG
;
LD B,E LD B,E
LD E,0 ;!FIXIT çñâ âãâ ­¥ç¨áâ®, ¯®¤£®­ª  ¯®¤ ®¤¨­ ¢ à¨ ­â ®ª­  £«®¡ «ì­®£®? LD E,0 ; ¢áî áâப㠮ª­  áªà®««¨¬
CALL .RUN CALL .RUN
.EXIT: CALL LP_CLOSE_PG .EXIT: JP LP_CLOSE_PG
RET ;
; ;
.RUN: PUSH BC .RUN: PUSH BC
CALL LP_AT_D CALL LP_SET_CUR ; ¢ëç¨á«¨âì ¯¥à¥¬¥­­ë¥ ¤«ï áâப¨
;CALL LP_TAB_E ; ¢ëç¨á«¨âì ¯¥à¥¬¥­­ë¥ ¤«ï áâப¨
POP BC POP BC
.loop2: EXX .loop2: EXX
PUSH HL PUSH HL
EXX EXX
POP HL POP HL
;
LD E,L LD E,L
LD D,H LD D,H
INC L ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
INC L ; ®â«¨ç¨¥ ®â LP_SCROLL_DN
INC L LD A,4
INC L ADD L
LD L,A
;
LD A,(WIN_ID_0.V_END) LD A,(WIN_ID_0.V_END)
CP L CP L
;JR C,.EXIT ; ¥á«¨ ª®­¥æ, â® ¢ë室 RET C ; ¥á«¨ ª®­¥æ, â® ¢ë室
RET C ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH BC PUSH BC
LD A,L LD A,L
EXX EXX
LD L,A LD L,A
EXX EXX
LD A,(WIN_ID_0.USER.SIZE_H) LD A,(WIN_ID_0.USER.SIZE_H)
ADD A,A ; ç¨á«® ¡ ©â ¢ áâப¥ ¤«ï ¯¥à¥­®á  ADD A,A ; ç¨á«® ¡ ©â ¢ áâப¥ ¤«ï ¯¥à¥­®á 
ADD A,A ADD A,A
LD C,A LD C,A
LD B,0 LD B,0
;
LD A,#50 LD A,#50
OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á  OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
EXX EXX
LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨ LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨
EXX EXX
.loop1: OUT (PORT_Y),A .loop1: OUT (PORT_Y),A
INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ  INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
LDD LDD
OUT (PORT_Y),A OUT (PORT_Y),A
INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ  INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
LDD LDD
JP PE,.loop1 JP PE,.loop1
;
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
POP BC POP BC
@ -1336,114 +1350,104 @@ LP_SCROLL_UP: DEC E
; ‚室 : ; ‚室 :
; D - ¢¥àå­ïï áâப  ( ®â 0 ) ; D - ¢¥àå­ïï áâப  ( ®â 0 )
; E - ç¨á«® áªà®««¨à㥬ëå áâப ; E - ç¨á«® áªà®««¨à㥬ëå áâப
LP_SCROLL_DN: LP_SCROLL_DN: DEC E ;!FIXIT ¯à ¢¨«ì­®?
DEC E ;!FIXIT ¯à ¢¨«ì­®?
RET Z RET Z
CALL LP_OPEN_PG CALL LP_OPEN_PG
;
LD B,E LD B,E
LD E,0 LD E,0
LD A,D LD A,D
ADD A,B ADD A,B
; DEC A
LD D,A LD D,A
PUSH BC CALL .RUN
CALL LP_AT_D .EXIT: JP LP_CLOSE_PG
;CALL LP_TAB_E ;
;
.RUN: PUSH BC
CALL LP_SET_CUR
POP BC POP BC
.loop2: EXX .loop2: EXX
PUSH HL PUSH HL
EXX EXX
POP HL POP HL
;
LD E,L LD E,L
LD D,H LD D,H
DEC L ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
DEC L ; ¬®¦­® ᮢ¬¥áâ¨âì. ¯à¨§­ ª ­ ¯à ¢«¥­¨ï ¢ ॣ C
DEC L ; ®â«¨ç¨¥ ®â LP_SCROLL_UD
DEC L LD A,L
SUB 4
LD L,A
;
LD A,(WIN_ID_0.V_BEG) LD A,(WIN_ID_0.V_BEG)
CP L ; .CONT: L >= A CP L ; .CONT: L >= A
JR Z,.CONT JR Z,.CONT
JR NC,.EXIT ; ¥á«¨ ª®­¥æ, â® ¢ë室 RET NC ; ¥á«¨ ª®­¥æ, â® ¢ë室
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.CONT: PUSH BC .CONT: PUSH BC
LD A,L LD A,L
EXX EXX
LD L,A LD L,A
EXX EXX
LD A,(WIN_ID_0.USER.SIZE_H) LD A,(WIN_ID_0.USER.SIZE_H)
ADD A,A ADD A,A ; ç¨á«® ¡ ©â ¢ áâப¥ ¤«ï ¯¥à¥­®á 
ADD A,A ADD A,A
LD C,A LD C,A
LD B,0 LD B,0
;
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
EXX EXX
LD A,D LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨
EXX EXX
.loop1: OUT (PORT_Y),A .loop1: OUT (PORT_Y),A
INC A INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
LDD LDD
OUT (PORT_Y),A OUT (PORT_Y),A
INC A INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
LDD LDD
JP PE,.loop1 JP PE,.loop1
;
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
POP BC POP BC
DJNZ .loop2 DJNZ .loop2
.EXIT: CALL LP_CLOSE_PG
RET RET
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥ ; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥
; € - ­®¬¥à ®ª­  ; € - ­®¬¥à ®ª­ 
; ¢ë室: HL - ᨬ¢®«/ âਡãâ B - §­ ª®£¥­¥à â®à ; ¢ë室: HL - ᨬ¢®«/ âਡãâ B - §­ ª®£¥­¥à â®à
WIN_GET_SYM: WIN_GET_SYM: AND A
AND A
SCF SCF
RET NZ RET NZ
;
CALL LP_BEG_P CALL LP_BEG_P
CALL LP_SET_CUR
CALL LP_AT_D
;CALL LP_TAB_E
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
;
EXX EXX
LD A,D
LD A,D OUT (PORT_Y),A
OUT (PORT_Y),A LD A,(HL)
LD A,(HL)
EXX EXX
LD L,A LD L,A
EXX EXX
INC L INC L
LD A,(HL) LD A,(HL)
EXX EXX
LD H,A LD H,A
EXX EXX
DEC L DEC L
DEC L DEC L
LD A,(HL) LD A,(HL)
INC L
EXX EXX
LD B,A LD B,A
EXX
INC L
EXX
JP LP_END_P JP LP_END_P
;RET ;RET
@ -1451,46 +1455,35 @@ WIN_GET_SYM:
; € - ­®¬¥à ®ª­  ; € - ­®¬¥à ®ª­ 
; HL - ᨬ¢®«/ âਡãâ ; HL - ᨬ¢®«/ âਡãâ
; B - §­ ª®£¥­¥à â®à ; B - §­ ª®£¥­¥à â®à
WIN_PUT_SYM: WIN_PUT_SYM: AND A
AND A
SCF SCF
RET NZ RET NZ
;
CALL LP_BEG_P CALL LP_BEG_P
CALL LP_SET_CUR
CALL LP_AT_D
;CALL LP_TAB_E
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
;
EXX EXX
;CORRECT_SCR_40
LD A,D LD A,D
OUT (PORT_Y),A OUT (PORT_Y),A
EXX EXX
LD A,L LD A,L
EXX EXX
LD (HL),A
LD (HL),A INC L
INC L
EXX EXX
LD A,H LD A,H
EXX EXX
LD (HL),A
LD (HL),A DEC L
DEC L DEC L
DEC L
EXX EXX
LD A,B LD A,B
EXX EXX
LD (HL),A
LD (HL),A INC L
INC L
EXX EXX
JP LP_END_P JP LP_END_P
@ -1530,9 +1523,7 @@ WIN_COPY_WIN1:
IN A,(SLOT1) IN A,(SLOT1)
PUSH AF PUSH AF
CALL LP_AT_D CALL LP_SET_CUR
;CALL LP_TAB_E
LD (SYS_PAGE.SYS_WORK1),SP LD (SYS_PAGE.SYS_WORK1),SP
LD A,B LD A,B
@ -1601,8 +1592,7 @@ WIN_RESTORE: AND A
IN A,(SLOT1) IN A,(SLOT1)
PUSH AF PUSH AF
; ;
CALL LP_AT_D CALL LP_SET_CUR
;CALL LP_TAB_E
; ;
LD (SYS_PAGE.SYS_WORK1),SP LD (SYS_PAGE.SYS_WORK1),SP
LD SP,IX LD SP,IX
@ -1722,7 +1712,7 @@ LP_PR_LINE_DIR:
LD A,XH LD A,XH
LD (HL),A LD (HL),A
INC D INC D
.next_full: TEST_SCR_40 .next_full: CORRECT_SCR_40
.next: DJNZ_NEXT_HL_ADDR .loop .next: DJNZ_NEXT_HL_ADDR .loop
JR .loop JR .loop
;-------[TAB] ;!FIXIT § ¯®«­ï¥â ¯à®¡¥« ¬¨ ;-------[TAB] ;!FIXIT § ¯®«­ï¥â ¯à®¡¥« ¬¨