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