new DSS in recovery

This commit is contained in:
Tolik 2025-03-06 03:29:13 +10:00
parent 8e8d43a9d5
commit dd79b546ec
7 changed files with 475 additions and 29 deletions

@ -1 +1 @@
Subproject commit 60b5ff6a74b57614b1f54fbe5611585cd46582ab
Subproject commit 9bfe7bd76b9648dae6f492dcd730b9b7ed80f48d

View File

@ -167,4 +167,8 @@
end
end
ENDLUA
;
;
/*
¨­¨ï 256 ¡ ©â®¢ ¢ Ž áâ ­®¢¨âáï á⮫¡¨ª®¬ ¢ ¢¨¤¥®¯ ¬ïâ¨.
«¥¢  ­ ¯à ¢® ¯¥à¥å®¤¨â ᢥàåã ¢­¨§. <EFBFBD>¥à¢ ï «¨­¨ï - ¯¥à¢ë© á⮫¡¨ª.
*/

View File

@ -597,12 +597,12 @@ WIN_SET_ZG: ; LP_SET_ZG:
AND #0F
ADD A,A
OUT (PORT_Y),A
LD A,B
RRCA
RRCA
RRCA
AND #18
OR #40
LD A,B ; %xx00'0000
RRCA ; %0xx0'0000
RRCA ; %00xx'0000
RRCA ; %000x'x000
AND %0001'1000
OR %0100'0000
LD H,A
LD L,0
LD BC,#0800 ;!HARDCODE
@ -783,7 +783,7 @@ LP_INI_P:
EXX
EX AF,AF'
CALL WIN_SET_ZG.SET ;LP_SET_ZG1
CALL WIN_SET_ZG.SET ;LP_SET_ZG1
EXX
EX AF,AF'
@ -833,9 +833,6 @@ LP_OPEN_S: LD A,B
LD L,A
JR NC,.no_inc
INC H
; LD A,H
; ADC A,0
; LD H,A
.no_inc: LD A,(HL)
INC HL
LD H,(HL)
@ -895,6 +892,9 @@ PIC_SET_S2:
;------------------------------------------------------------------[#B0]
; HL - ¬¥áâ® ­  íªà ­¥ ¯® §­ ª®¬¥áâ ¬ (<28>ˆ<CB86>Žœ‡“…Ÿ)
; IX - ®¯¨á â¥«ì ®ª­ 
WIN_OPEN.SCR1:
LD E,1
; E - bit0 - ­®¬¥à íªà ­ 
WIN_OPEN:
LP_OPEN_PG
LD (SYS_PAGE.WIN_MAP_SC),IX ; ª àâ  ®ª­ 
@ -1055,7 +1055,7 @@ LP_MODE_LINE:
LP_MODE_RECURSE:
LD A,D ; £®à¨§®­â «ì­®¥ ¯®«®¦¥­¨¥
AND 7FH
AND #7F
SUB 80
JR C,LP_MODE_LL
SUB 48
@ -1067,7 +1067,7 @@ LP_MODE_RECURSE:
LD A,E ; ¢®ááâ ­®¢¨âì
RRA
AND 3FH
AND #3F
SUB C
JR NC,LP_EXIT_MODE
NEG
@ -1077,7 +1077,7 @@ LP_MODE_RECURSE:
LP_MODE_LL:
NEG
RRA
AND 3FH
AND #3F
CP C
JR NC,LP_MODE_LR
LD C,A
@ -1910,3 +1910,453 @@ LP_CR: LD A,SYS_PAGE
JR LP_PRINT_LN_D11
;------------------------------------------------------------------[#E0]
;!TODO áâ à ï LP_SET_MODE - à áª®¢ëàïâì áâ àë© LP_SCR_MNU
/*
MODULE EXPERIMENT
; byte 1
; 0..4 - VIDEO_PAGE
; 5 - mode 42/84 ; 0 - 42,1 - 84
; 6 - next line
; 7 - end table
; byte 2 - number of places
; byte 3..4 - adress places/
; 4000-5FFF - Spectrum modes/ C000-FFFF - Graf mode
;
MACRO LP_S PG,XX,ADR
DB PG,XX
DW ADR
ENDM
;---------------------------------------
GR_BIT_END EQU 7
S_BIT_END EQU 7
S_BIT_LIN EQU 6
S_BIT_MOD EQU 5
BIT_1440 EQU 1
BIT_MASK_1440 EQU %00000010
MODE_PAGE EQU #FC
;---------------------------------------
;DS (($/4)*4+4-$)
ALIGN 4
LP_SCR_MNU:
LP_S #40,14,#40E7
LP_S #40,14,#4807
LP_S #40,14,#4827
LP_S #40,14,#4847
LP_S #40,14,#4867
LP_S #40,14,#4887
LP_S #40,14,#48A7
LP_S #40,14,#48C7
LP_S #40,14,#48E7
DB #FF,0,0,0
; LP_SCR_80:
; 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 %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 %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 %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 %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 %01100100,40,#5000
; LP_S %01100100,40,#5028
;
; DEFB #FF,0,0,0
;
; LP_SCR_40:
; DB 40,32,0,0,7BH,0,0,0
; DB 0,0,0,0,0,0,0,0
;
; LP_S 01000100B,40,5050H
; LP_S 01000100B,40,5078H
; LP_S 01000100B,40,50A0H
; LP_S 01000100B,40,50C8H
;
; LP_S 01000110B,40,4000H
; LP_S 01000110B,40,4028H
; LP_S 01000110B,40,4050H
; LP_S 01000110B,40,4078H
; LP_S 01000110B,40,40A0H
; LP_S 01000110B,40,40C8H
;
; LP_S 01000110B,40,4800H
; LP_S 01000110B,40,4828H
; LP_S 01000110B,40,4850H
; LP_S 01000110B,40,4878H
; LP_S 01000110B,40,48A0H
; LP_S 01000110B,40,48C8H
;
; LP_S 01000110B,40,5000H
; LP_S 01000110B,40,5028H
; LP_S 01000110B,40,5050H
; LP_S 01000110B,40,5078H
; LP_S 01000110B,40,50A0H
; LP_S 01000110B,40,50C8H
;
; LP_S 01001000B,40,4000H
; LP_S 01001000B,40,4028H
; LP_S 01001000B,40,4050H
; LP_S 01001000B,40,4078H
; LP_S 01001000B,40,40A0H
; LP_S 01001000B,40,40C8H
;
; LP_S 01001000B,40,4800H
; LP_S 01001000B,40,4828H
; LP_S 01001000B,40,4850H
; LP_S 01001000B,40,4878H
;
; DEFB 0FFh,0,0,0
;
; LP_SCR_32:
; DB 32,24,4,4,30H,1,0,0
; DB 0,0,0,0,0,0,0,0
;
; LP_S 040h,32,04000H
; LP_S 040h,32,04020H
; LP_S 040h,32,04040H
; LP_S 040h,32,04060H
; LP_S 040h,32,04080H
; LP_S 040h,32,040A0H
; LP_S 040h,32,040C0H
; LP_S 040h,32,040E0H
;
; LP_S 040h,32,04800H
; LP_S 040h,32,04820H
; LP_S 040h,32,04840H
; LP_S 040h,32,04860H
; LP_S 040h,32,04880H
; LP_S 040h,32,048A0H
; LP_S 040h,32,048C0H
; LP_S 040h,32,048E0H
;
; LP_S 040h,32,05000H
; LP_S 040h,32,05020H
; LP_S 040h,32,05040H
; LP_S 040h,32,05060H
; LP_S 040h,32,05080H
; LP_S 040h,32,050A0H
; LP_S 040h,32,050C0H
; LP_S 040h,32,050E0H
;
; LP_S 0FFh,0,0
;
; LP_SCR_64:
; DB 32,24,4,4,9BH,0,0,0
; DB 0,0,0,0,0,0,0,0
;
; LP_S 06Ah,32,04000H
; LP_S 06Ah,32,04020H
; LP_S 06Ah,32,04040H
; LP_S 06Ah,32,04060H
; LP_S 06Ah,32,04080H
; LP_S 06Ah,32,040A0H
; LP_S 06Ah,32,040C0H
; LP_S 06Ah,32,040E0H
;
; LP_S 06Ah,32,04800H
; LP_S 06Ah,32,04820H
; LP_S 06Ah,32,04840H
; LP_S 06Ah,32,04860H
; LP_S 06Ah,32,04880H
; LP_S 06Ah,32,048A0H
; LP_S 06Ah,32,048C0H
; LP_S 06Ah,32,048E0H
;
; LP_S 06Ah,32,05000H
; LP_S 06Ah,32,05020H
; LP_S 06Ah,32,05040H
; LP_S 06Ah,32,05060H
; LP_S 06Ah,32,05080H
; LP_S 06Ah,32,050A0H
; LP_S 06Ah,32,050C0H
; LP_S 06Ah,32,050E0H
;
; LP_S 0FFh,0,0
LP_SET_MNU:
LD IX,LP_SCR_MNU
JR LP_SET_MODE
; HL - ᬥ饭¨¥ ®â ­ ç «  íªà ­ 
; = hor_sh + vert_sh * 64 + 4000H
; IX - íªà ­­ ï â ¡«¨æ 
LP_SET_MODE: LP_OPEN_PG
LD (SYS_PAGE.WIN_MAP_SC),IX
LD (SYS_PAGE.WIN_MODE_SH),HL
LD (SYS_PAGE.WIN_MODE_SC),DE
LD HL,(SYS_PAGE.WIN_MAP_SC)
LD DE,SYS_PAGE.WIN_MAP_IX
.LP_SET_COPY: LD BC,4
LDIR
BIT S_BIT_END,(HL)
JR Z,.LP_SET_COPY
LD BC,4
LDIR
LD HL,SYS_PAGE.WIN_MAP_IX
LD (SYS_PAGE.WIN_MAP_SC),HL
.LP_SET_MODE_INT:
LD IX,(SYS_PAGE.WIN_MAP_SC)
LD HL,(SYS_PAGE.WIN_MODE_SH)
CALL LP_SET_MODE1
LD DE,(SYS_PAGE.WIN_MODE_SC)
LP_CLOSE_PG
PUSH DE
CALL LP_INI_P
POP DE
LD A,E
OUT (RGMOD),A
CALL LP_SIZE
RET
LP_SET_MODE1: AND A
BIT S_BIT_END,(IX) ; ¯à®¢¥àª  ª®­æ  ¤ ­­ëå
RET NZ
PUSH HL
IN A,(RGADR)
PUSH AF
LD A,H
CP #48
CCF
LD A,#16
ADC A,0
OUT (RGADR),A
.LP_SET_LOOP: CALL LP_MODE_LINE
INC IX
INC IX
INC IX
INC IX
BIT S_BIT_LIN,(IX)
JR Z,.LP_SET_LOOP
POP AF
OUT (RGADR),A
POP HL
LD BC,#40
ADD HL,BC
JR LP_SET_MODE1
;********************************************************
; ‚ëç¨á«¥­¨¥ §­ ç¥­¨ï MODE ¨§ íªà ­­®© â ¡«¨æë.
; IX - ⥪ã饥 ¯®«®¦¥­¨¥ ¢ â ¡«¨æ¥.
LP_MODE_LINE: BIT 3,H
RET NZ
IN A,(SLOT1)
LD (SYS_PAGE.SYS_WORK1),A
IN A,(RGADR)
AND 1
OR MODE_PAGE
OUT (SLOT1),A
LD A,(IX)
LD B,A
RRCA
AND #0F
LD C,A
LD A,B
AND #20
XOR #30
OR C
LD C,A
LD A,(IX+3)
RLC A
RLC A
RLC A
AND #C0
OR C
LD D,A ; <20>¥à¢ë© ¡ ©â MODE
LD E,(IX+2) ; ‚â®à®© ¡ ©â..
LD B,(IX+1) ; ç¨á«® §­ ª®¬¥áâ
LD A,L
AND #3F
SUB 40
JR NC,.LP_NO_SET_MD
NEG
CP B
JR NC,.LP_MD_NO_B
LD B,A
.LP_MD_NO_B:
.LP_MD_LOOP: SET 4,H
LD (HL),E
RES 4,H
LD (HL),D
INC E
INC L
DJNZ .LP_MD_LOOP
.LP_MD_END: LD A,(SYS_PAGE.SYS_WORK1)
OUT (SLOT1),A
RET
.LP_NO_SET_MD: LD A,C
.LP_MD_LOOP2: INC E
INC L
BIT 5,H
JR Z,.LP_MD_LOOP
DJNZ .LP_MD_LOOP2
JR .LP_MD_END
; ¢ëç¨á«¥­¨¥ ­®¢®£® ¬¥áâ 
LP_TAB_HL: LD HL,(SYS_PAGE.WIN_TAB_SC) ; § £à㧨âì ⥪ã饥 ¯®«®¦¥­¨¥ ¢ â ¡«¨æ¥ SCR
LD A,(HL) ; § £à㧨âì ä« £¨ â ¡«¨æë
BIT S_BIT_END,A ; ä« £ ª®­æ 
JR Z,LP_TAB_H1 ; ¥á«¨ 0 - ­¥ ª®­¥æ
LP_TAB_H2: LD HL,(SYS_PAGE.WIN_MAP_SC) ; § £à㧨âì ­ ç «ì­®¥ ¯®«®¦¥­¨¥ ¢ â ¡«¨æ¥ SCR
LP_TAB_H3: LD A,(HL) ; ¨ ­®¢ë¥ ä« £¨
LP_TAB_H1: CALL .LP_PG1 ; ¯¥à¥ª«îç¨âì áâà ­¨æã
INC HL ; (HL) - ­®¢®¥ ç¨á«® ᨬ¢®«®¢
BIT S_BIT_MOD,A ; ¡¨â 42/84
LD A,(HL) ; § £à㧨âì ç¨á«® ᨬ¢®«®¢
JR Z,.LP_NO_MUL ; ¥á«¨ 84, â® ­¥ ­ã¦­® 㬭®¦¥­¨¥ ­  2
ADD A,A ; A=A*2
.LP_NO_MUL: LD B,A ; ç¨á«® ᨬ¢®«®¢ ¢ B
INC HL ; § £à㧪  ­®¢®£® HL
LD A,(HL)
INC HL
INC HL
LD (SYS_PAGE.WIN_TAB_SC),HL ; á á®åà ­¥­¨¥¬ á«¥¤ãî饣® ¯®«®¦¥­¨ï ¢ â ¡«¨æ¥ SCR
DEC HL
LD H,(HL) ; ¯®«®¦¥­¨¥ ­  íªà ­¥
LD L,A
LD A,H
RRCA ; ¢ëç¨á«¨âì ¯®«®¦¥­¨¥
RRCA ;  ââਡãâ 
RRCA
AND 3
OR H
OR #18
LD C,A
RET
.LP_PG1: AND #1F ; ¯¥à¥ª«îç âì ⮫쪮 áâà ­¨æë އ“ Spectrum mode
OUT (RGADR),A
LD E,(HL) ; §­ ç¥­¨¥ ¡¨â®¢ ¨ ä« £®¢
BIT S_BIT_MOD,E ; ¡¨â 42/84
JR Z,.LP_N_84 ; ¥á«¨ 42 â® ­¥ ãáâ ­ ¢«¨¢ âì CF
SCF ; 84 mode
.LP_N_84: EX AF,AF' ; á¯àïâ âì ä« £¨ ¨ §­ ç¥­¨¥ ¤«ï ¢ë¢®¤  ¢ ¯®àâ
LD A,E ; ¢ A ¤®«¦¥­ ¡ëâì ¡ ©â á ä« £ ¬¨
RET
; program init registers
; for low printer & save
LP_INI_P: EXX
LP_OPEN_PG
LD DE,(SYS_PAGE.WIN_ZG)
LD B,0
CALL LP_TAB_H2
EXX
; program save registers
; for low printer
LP_END_P: EX AF,AF'
EXX
RLA
LD E,A
LD (SYS_PAGE.WIN_SAV_HL),HL
LD (SYS_PAGE.WIN_SAV_DE),DE
LD (SYS_PAGE.WIN_SAV_BC),BC
LP_CLOSE_PG
EXX
EX AF,AF'
RET
; ®¯à¥¤¥«¥­¨¥ size
LP_SIZE: LP_OPEN_PG
EXX
XOR A
LD HL,(SYS_PAGE.WIN_MAP_SC) ; ­ ç «® ª àâë scr
CALL .LP_LN2 ; ᪠­¨à®¢ âì ¤®
EXX ; ª®­æ 
NEG ; ¯®«ãç¨âì ç¨á«®
LD D,A ; áâப ¢ D
LD E,0
EXX
;LD A,3 ; ç¨á«® ᨬ¢®«®¢
LD HL,(SYS_PAGE.WIN_MAP_SC) ; ¯® 3-©¥ áâப¥
;CALL LP_LN2 ; ­ áâனª 
.LOOP: CALL LP_TAB_H3 ; ¤ ­­ë¥
LD A,B
EXX
ADD A,E
LD E,A
EXX
LD HL,(SYS_PAGE.WIN_TAB_SC) ; ¤ ­­ë¥ íªà ­ 
BIT S_BIT_LIN,(HL)
JR Z,.LOOP
;BIT S_BIT_MOD,(HL)
EXX
;XOR A
;OUT (RGADR),A
LP_CLOSE_PG
RET
;
.LP_LN0: DEC A
RET Z
.LP_LN1: INC HL
INC HL
INC HL
INC HL
.LP_LN2: BIT S_BIT_LIN,(HL)
JR Z,.LP_LN1
BIT S_BIT_END,(HL)
JR Z,.LP_LN0
RET
ENDMODULE
*/

View File

@ -496,9 +496,7 @@ INSTALL:
XOR A
OUT (BorderColor),A
LD IX,win_descriptor.tab80x32
;LD HL,#0000
LD E,1
CALL WIN_OPEN
CALL WIN_OPEN.SCR1
LD DE,0
LD HL,#2050

View File

@ -858,9 +858,7 @@ setInt: ld a,CMOS_CELL.ScreenSET
.set: CALL FN_SYNC
LD IX,win_descriptor.tab80x32
;LD HL,#0000
LD E,1
CALL WIN_OPEN
CALL WIN_OPEN.SCR1
ld a,(ITEM)
ld (ITEM_Restore),a

View File

@ -316,12 +316,12 @@ LOGOTYPE: CALL SHOW_LOGO
; ;
.ERASE_LOGO: LD IX,win_descriptor.tab80x32
;LD HL,#0000
LD E,1
;LD E,1
;
EI
HALT
DI
CALL WIN_OPEN
CALL WIN_OPEN.SCR1
;
LD DE,0
LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE
@ -338,9 +338,7 @@ LOGOTYPE: CALL SHOW_LOGO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHOW_LOGO: LD IX,win_descriptor.tab320x256
;LD HL,#0000
LD E,1
CALL WIN_OPEN
CALL WIN_OPEN.SCR1
SAFE_PORTY
@ -449,9 +447,7 @@ go_setup: ; !FIXIT
jr nz,go_setup
LD IX,win_descriptor.tab80x32
;LD HL,#0000
LD E,1
CALL WIN_OPEN
CALL WIN_OPEN.SCR1
JP ENTER_SETUP
.to_EXIT_SETUP:

Binary file not shown.