LP_PR_LINE_DIR: осталось BELL и Form feed

This commit is contained in:
Tolik 2025-03-26 01:44:05 +10:00
parent ba3112f006
commit f8f75dc091
4 changed files with 118 additions and 152 deletions

@ -1 +1 @@
Subproject commit 7c03abc82040df54cec2bc6701b0f602fa08fd26
Subproject commit 9143dcb7f8fd9cd3ae0bc179b94fced5efd8667f

View File

@ -141,7 +141,7 @@ TAB_FNS:
DB low EMM.MergeMemBlocks ; #9E ᫨ﭨ¥ ¤¢ãå ¡«®ª®¢
DB low EMM.FullInit ; #9F ¨­¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨, á¨á⥬­ëå ¯¥à¥¬¥­­ëå
; Ax
DB low PIC_FN0 ; #A0 ŽŠ<E28099>ˆ… ŽŠ<C5BD>
DB low PIC_FN0_OpenWin ; #A0 ŽŠ<E28099>ˆ… ŽŠ<C5BD>
DB low PIC_FN1 ; #A1 ‚›‚…‘’ˆ ’Ž—Š“
DB low PIC_FN2 ; #A2 ‚›‚Ž„ ˆ<E280B9>ˆˆ COPY
DB low PIC_FN3 ; #A3 ‚›‚Ž„ ˆ<E280B9>ˆˆ FILL
@ -333,7 +333,7 @@ TAB_FNS:
DB high EMM.MergeMemBlocks
DB high EMM.FullInit
; Ax
DB high PIC_FN0
DB high PIC_FN0_OpenWin
DB high PIC_FN1
DB high PIC_FN2
DB high PIC_FN3

View File

@ -70,18 +70,20 @@
.LLL: EX AF,AF'
ENDM ;
MACRO CORRECT_SCR_40_BACK
EX AF,AF'
JR C,.LLL
DEC D ; ०¨¬ 40
.LLL: EX AF,AF'
ENDM ;
MACRO DJNZ_NEXT_HL
DJNZ .LLL
CALL LP_NEXT_HL
.LLL: ;
ENDM
MACRO DJNZ_NEXT_HL_ADDR addr
DJNZ addr
CALL LP_NEXT_HL_DIR
ENDM
;*********************************
;* LOW LEVEL PRINTER *
@ -208,8 +210,6 @@ LP_PRINT_ATR: CALL LP_BEG_P
DJNZ_NEXT_HL
EXX
DJNZ .loop
;LD A,SYS_PAGE
;OUT (SLOT3),A
JP LP_END_P
;------------------------------------------------------------------[#83]
;
@ -241,8 +241,6 @@ LP_PRINT_LINE: CALL LP_BEG_P
DJNZ_NEXT_HL
EXX
DJNZ .loop
;LD A,SYS_PAGE
;OUT (SLOT3),A
JP LP_END_P
;------------------------------------------------------------------[#85]
;
@ -287,8 +285,8 @@ LP_PRINT_LINE3: CALL LP_BEG_P
INC HL
CP D
JR NZ,.NoEnd
;
DEC HL
;LD A,' ' ;!TEST
EXX
LD C,' '
JP LP_PRINT_ALL.cont
@ -323,8 +321,8 @@ LP_PRINT_LINE4: CALL LP_BEG_P
INC HL
CP D
JR NZ,.NoEndSymbol
;
DEC HL
;LD A,' ' ;!TEST
EXX
LD C,' '
JP LP_PRINT_SYM.cont
@ -345,10 +343,12 @@ LP_PRINT_LINE4: CALL LP_BEG_P
LP_PRINT_LINE5: CALL LP_BEG_P
LD A,#50
OUT (SLOT3),A
EXX
LD C,PORT_Y
EXX
;
.loop: EXX
LD A,D
OUT (PORT_Y),A
OUT (C),D
EXX
LD A,(HL)
INC HL
@ -398,10 +398,12 @@ LP_END_P: LD A,SYS_PAGE
LP_PRINT_LINE6: CALL LP_BEG_P
LD A,#50
OUT (SLOT3),A
EXX
LD C,PORT_Y
EXX
;
.loop: EXX
LD A,D
OUT (PORT_Y),A
OUT (C),D
EXX
LD A,(HL)
INC HL
@ -438,15 +440,6 @@ 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)
@ -459,6 +452,12 @@ LP_GET_PLACE: CALL LP_BEG_P
RRCA
AND %0011'1111
LD D,A
; ०¨¬ txt 40
EX AF,AF'
JR C,.no_txt40
SRL E
AND A
.no_txt40: EX AF,AF'
JP LP_END_P.short
;------------------------------------------------------------------[#8E]
;
@ -471,16 +470,15 @@ LP_CLS_WIN2: LD C,A
;--------------------------------------------------------[#8D]
;--------------------------------------------------------[#89]
LP_CLS_WIN: LD C,' '
;JR CLS_WIN
;----------------- ---------------------------[#89]
;---------------- -----------------------------[#89]
CLS_WIN: CALL LP_BEG_P
LD (SYS_PAGE.SYS_WORK1),BC ; á®åà ­¨âì æ¢¥â
LD (SYS_PAGE.SYS_WORK1),BC ; á®åà ­¨âì æ¢¥â ; !TODO ¨á¯®«ì§®¢ âì ¯¥à¥¬¥­­ë¥ ®ª­ 
PUSH DE
;
.loop1: CALL LP_SET_CUR
PUSH DE
EXX
LD BC,(SYS_PAGE.SYS_WORK1)
LD BC,(SYS_PAGE.SYS_WORK1) ; !TODO ¨á¯®«ì§®¢ âì ¯¥à¥¬¥­­ë¥ ®ª­ 
EXX
LD B,L
LD A,#50
@ -611,10 +609,11 @@ LP_SIZE: CALL LP_OPEN_PG
AND %0010'0000
CALL LP_CLOSE_PG
RET NZ
;
LD A,E
ADD A,A
LD E,A
; txt 40
; LD A,E
; ADD A,A
; LD E,A
SLA E
RET
;
@ -641,7 +640,7 @@ LP_SET_CUR: ; LP_AT_D:
ADD A,L
LD L,A
INC L
LD H,#C3
LD H,#C3 ;!HARDCODE ­ ç «® ®¯¨á â¥«¥© ¢ SLOT3
EXX
;RET
;
@ -664,15 +663,8 @@ LP_SET_CUR: ; LP_AT_D:
;
EX AF,AF'
JR C,.LLL
SLA D ; ०¨¬ txt 40
SLA D ; ०¨¬ txt 40. ­¥ ¤®«¦­® áâ ¢¨âì CF
.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
@ -680,7 +672,6 @@ LP_SET_CUR: ; LP_AT_D:
RET
;*************************************************************
LP_NEXT_HL_DIR: LD A,SYS_PAGE
OUT (SLOT3),A
LD A,4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
@ -700,12 +691,14 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
SUB 4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
LD L,A
PUSH HL
DEC HL
PUSH BC
PUSH DE
EXX
PUSH BC
PUSH DE
PUSH HL
LD A,(WIN_ID_0.V_BEG)
LD D,A
LD A,(WIN_ID_0.USER.SIZE_V)
LD B,A
LD E,0 ; ¢áî áâப㠮ª­  áªà®««¨¬
@ -713,6 +706,8 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
EXX
LD C," "
;
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,(WIN_ID_0.V_END)
DEC L
DEC L
@ -728,7 +723,6 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
EXX
LD A,(WIN_ID_0.SIZE_REL)
LD B,A
;
.loop_cl_line: EXX
LD A,D
OUT (PORT_Y),A
@ -739,7 +733,6 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
DJNZ .loop_cl_line
;
POP HL
POP DE
POP BC
EXX
POP DE
@ -771,7 +764,7 @@ LP_NEXT_HL: LD A,SYS_PAGE
;
.end_line: LD HL,(WIN_ID_0.V_BEG)
INC L
LD H,#C3 ;!HARDCODE
LD H,#C3 ;!HARDCODE ­ ç «® ®¯¨á â¥«¥© ¢ SLOT3
JP .no_end_line
; !®¦¨¤ ¥âáï, çâ® ¯®àâïâáï ⮫쪮  «ìâ¥à­ â¨¢­ë¥ ॣ¨áâàë ¨ â¥, çâ® ª ª ¯ à ¬¥âàë ­  ¢å®¤¥
@ -794,21 +787,21 @@ LP_INI_P: EX AF,AF'
CALL LP_OPEN_PG
LD A,(WIN_ID_0.USER.MODE)
CP #C0
JR NC,LP_INI_NO_ZG ; ®âªàë⨥ ¡®à¤¥à ...
JR NC,.NO_ZG ; ®âªàë⨥ ¡®à¤¥à ...
LD A,(WIN_ID_0.USER.MODE_S)
AND %0000'0001
JR NZ,LP_INI_NO_ZG ; ®âªàë⨥ Spectrum-Screen
JR NZ,.NO_ZG ; ®âªàë⨥ Spectrum-Screen
;
LD A,(WIN_ID_0.USER.MODE)
BIT 4,A
JR Z,LP_INI_NO_ZG ; ®âªàë⨥ £à ä¨ç¥áª®£® íªà ­ 
JR Z,.NO_ZG ; ®âªàë⨥ £à ä¨ç¥áª®£® íªà ­ 
LD DE,(SYS_PAGE.WIN_ZG) ; §­ ª®£¥­¥à â®à
EXX
EX AF,AF'
CALL WIN_SET_ZG.SET ;LP_SET_ZG1
EXX
CALL WIN_SET_ZG.SET ;LP_SET_ZG1 ;!TODO á⮨⠫¨ ª ¦¤ë© à § § ª¨¤ë¢ âì èà¨äâ?
EX AF,AF'
LP_INI_NO_ZG: LD A,(WIN_ID_0.H_BEG)
EXX
.NO_ZG: LD A,(WIN_ID_0.H_BEG)
LD D,A
LD A,(WIN_ID_0.V_BEG)
LD L,A
@ -818,16 +811,12 @@ LP_INI_NO_ZG: LD A,(WIN_ID_0.H_BEG)
LD A,(WIN_ID_0.USER.MODE)
BIT 5,A
LD A,(WIN_ID_0.USER.SIZE_H)
JR NZ,LP_INI_40
JR NZ,.TXT_40
; TXT_80
ADD A,A
SCF
LP_INI_40: LD B,A
.TXT_40: LD B,A
LD (WIN_ID_0.SIZE_REL),A
;LD DE,(SYS_PAGE.WIN_MODE_SC) ; ¬¥áâ® ¯® £®à¨§®­â «¨ ¨ áâà ­¨æ  ¬®¤ë
;LD HL,(SYS_PAGE.WIN_MODE_SH) ; ¬¥áâ® ¯® ¢¥à⨪ «¨ á  ¤à¥á®¬
;INC HL
;LD B,0
;CALL LP_TAB_H2
EX AF,AF'
EXX
JP LP_END_P
@ -870,29 +859,29 @@ LP_SC_TAB: DW LP_SET_32 ; 0 - ᯥ
; !TODO
; LP_SET_MNU:
; LD IX,LP_SCR_MNU
; JP LP_SET_MODE
; JP PIC_FN0_OpenWin
LP_SET_32: LD HL,#4104
.X: LD IX,LP_SCR_32
JP LP_SET_MODE
JP PIC_FN0_OpenWin
LP_SET_64: LD HL,#4104
.X: LD IX,LP_SCR_64
JP LP_SET_MODE
JP PIC_FN0_OpenWin
LP_SET_40: LD HL,#4000
.X: LD IX,LP_SCR_40
JP LP_SET_MODE
JP PIC_FN0_OpenWin
LP_SET_80: LD HL,#4000
.X: LD IX,LP_SCR_80
JP LP_SET_MODE
JP PIC_FN0_OpenWin
PIC_SET_S1: LD IX,PIC_320X256_1
JP LP_SET_MODE
JP PIC_FN0_OpenWin
PIC_SET_S2: LD IX,PIC_320X256_2
JP LP_SET_MODE
JP PIC_FN0_OpenWin
;------------------------------------------------------------------[#80]
;
@ -934,26 +923,27 @@ WIN_OPEN: CALL .Prepare
; HL = X + Y*64 + #4000 + #1000*RGMOD. ¬¥áâ® ­  íªà ­¥ ¯® §­ ª®¬¥áâ ¬
; IX - ®¯¨á â¥«ì ®ª­ 
; E - bit0: ­®¬¥à íªà ­ 
PIC_FN0:
LP_SET_MODE: ; 䨭⠤«ï ᮢ¬¥á⨬®á⨠ᮠáâ à묨 ¯à®£ ¬¨, £¤¥ ¯¥à¥¤ ¢ «¨áì ¤à㣨¥ ¯ à ¬¥âàë
LD A,H
AND %00001'0000 ; ¯¥à¥¬¥áâ¨âì ¡¨â 4 ¢ ॣ¨áâà E
XOR E
LD E,A
;
LD A,L
AND #3F
ADD HL,HL
ADD HL,HL
LD L,A
;
LD A,H
AND #3F
LD H,A
;LP_SET_MODE:
PIC_FN0_OpenWin:
; 䨭⠤«ï ᮢ¬¥á⨬®á⨠ᮠáâ à묨 ¯à®£ ¬¨, £¤¥ ¯¥à¥¤ ¢ «¨áì ¤à㣨¥ ¯ à ¬¥âàë
LD A,H
AND %00001'0000 ; ¯¥à¥¬¥áâ¨âì ¡¨â 4 ¢ ॣ¨áâà E
XOR E
LD E,A
;
LD A,L
AND #3F
ADD HL,HL
ADD HL,HL
LD L,A
;
LD A,H
AND #3F
LD H,A
CALL WIN_OPEN.Prepare
LD (IX + Window_Variables.USER.PLACE_H),L
LD (IX + Window_Variables.USER.PLACE_V),H
;
WIN_OPEN_W1: LD A,L
ADD A,A
INC A ; ¢ëç¨á«¥­¨¥ PORT_Y
@ -1293,9 +1283,15 @@ LP_SCROLL_UP: DEC E
.EXIT: JP LP_CLOSE_PG
;
;
.RUN: PUSH BC
CALL LP_SET_CUR ; ¢ëç¨á«¨âì ¯¥à¥¬¥­­ë¥ ¤«ï áâப¨
POP BC
.RUN: CALL LP_SET_CUR ; ¢ëç¨á«¨âì ¯¥à¥¬¥­­ë¥ ¤«ï áâப¨
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ®â«¨ç¨¥ ®â LP_SCROLL_DN
LD A,(WIN_ID_0.V_END)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LD C,A
LD A,#50
OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
;
.loop2: EXX
PUSH HL
EXX
@ -1303,16 +1299,16 @@ LP_SCROLL_UP: DEC E
;
LD E,L
LD D,H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ®â«¨ç¨¥ ®â LP_SCROLL_DN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ®â«¨ç¨¥ ®â LP_SCROLL_DN
LD A,4
ADD L
LD L,A
;
LD A,(WIN_ID_0.V_END)
LD A,C
CP L
RET C ; ¥á«¨ ª®­¥æ, â® ¢ë室
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH BC
LD A,L
EXX
@ -1324,8 +1320,6 @@ LP_SCROLL_UP: DEC E
LD C,A
LD B,0
;
LD A,#50
OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
EXX
LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨
EXX
@ -1339,8 +1333,6 @@ LP_SCROLL_UP: DEC E
LDD
JP PE,.loop1
;
LD A,SYS_PAGE
OUT (SLOT3),A
POP BC
DJNZ .loop2
RET
@ -1363,9 +1355,15 @@ LP_SCROLL_DN: DEC E ;!FIXIT
.EXIT: JP LP_CLOSE_PG
;
;
.RUN: PUSH BC
CALL LP_SET_CUR
POP BC
.RUN: CALL LP_SET_CUR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ®â«¨ç¨¥ ®â LP_SCROLL_UD
LD A,(WIN_ID_0.V_BEG)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LD C,A
LD A,#50
OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
;
.loop2: EXX
PUSH HL
EXX
@ -1373,18 +1371,17 @@ LP_SCROLL_DN: DEC E ;!FIXIT
;
LD E,L
LD D,H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ¬®¦­® ᮢ¬¥áâ¨âì. ¯à¨§­ ª ­ ¯à ¢«¥­¨ï ¢ ॣ C
; ®â«¨ç¨¥ ®â LP_SCROLL_UD
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ®â«¨ç¨¥ ®â LP_SCROLL_UD
LD A,L
SUB 4
LD L,A
;
LD A,(WIN_ID_0.V_BEG)
LD A,C
CP L ; .CONT: L >= A
JR Z,.CONT
RET NC ; ¥á«¨ ª®­¥æ, â® ¢ë室
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.CONT: PUSH BC
LD A,L
EXX
@ -1396,8 +1393,6 @@ LP_SCROLL_DN: DEC E ;!FIXIT
LD C,A
LD B,0
;
LD A,#50
OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
EXX
LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨
EXX
@ -1411,8 +1406,6 @@ LP_SCROLL_DN: DEC E ;!FIXIT
LDD
JP PE,.loop1
;
LD A,SYS_PAGE
OUT (SLOT3),A
POP BC
DJNZ .loop2
RET
@ -1653,24 +1646,27 @@ LP_PR_LINE_DIR:
;
LD A,(WIN_ID_0.H_BEG)
CP D
JR Z,.next_full ;!FIXIT ¢®§¬®¦­®, çâ® ­¥ á
JR Z,.loop
INC B
DEC D
JR .next_full ;!FIXIT ¢®§¬®¦­®, çâ® ­¥ á
CORRECT_SCR_40_BACK
JP .loop
;
.EXIT: POP IX
JP LP_END_P
;;;;;;;;;;;;;;;;;
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥, ¥á«¨ A != 0
; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
; B - à §¤¥«¨â¥«ì
; A - mode
;;;;;;;;;;;;;;;;;
.START: PUSH IX
AND A ; check mode for DE
;
IN A,(SLOT3)
LD C,A
CALL LP_BEG_P
; LD A,#50
; OUT (SLOT3),A
CALL NZ,LP_SET_CUR ; mode for DE
;
EXX
.loop: LD A,D
@ -1713,8 +1709,9 @@ LP_PR_LINE_DIR:
LD (HL),A
INC D
.next_full: CORRECT_SCR_40
.next: DJNZ_NEXT_HL_ADDR .loop
JR .loop
.next: DJNZ .loop
CALL LP_NEXT_HL_DIR
JP .loop
;-------[TAB] ;!FIXIT § ¯®«­ï¥â ¯à®¡¥« ¬¨
.TAB: LD A,SYS_PAGE
OUT (SLOT3),A
@ -1757,37 +1754,6 @@ LP_PR_LINE_DIR:
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]
;

View File

@ -340,7 +340,7 @@ SET_PAL_INIT:
; <20>¨á®¢ ­¨¥ «¨­¨¨.
; d… - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì
; H' - ¢ëá®â , C'/DE',B' - add_parameters
; A - color
; A - color ;!FIXIT § ¬¥­¨âì áà §ã ­  D?
PIC_FN7:
LD D,A
IN A,(SLOT1)
@ -351,9 +351,9 @@ PIC_FN7:
OUT (SLOT1),A
BIT 0,B
LD BC,#40+#4000
LD BC,#40+#4000 ;!HARDCODE screen
JR Z,.no_2nd
LD BC,#40+320+#4000
LD BC,#40+320+#4000 ;!HARDCODE screen
.no_2nd:
ADD HL,BC
LD A,E
@ -408,9 +408,9 @@ PIC_FN8:
OUT (SLOT1),A
BIT 0,B
LD BC,#40+#4000
LD BC,#40+#4000 ;!HARDCODE screen
JR Z,.no_2nd
LD BC,#40+320+#4000
LD BC,#40+320+#4000 ;!HARDCODE screen
.no_2nd:
ADD HL,BC
LD A,E