LP_PR_LINE_DIR готова

This commit is contained in:
Tolik 2025-03-28 03:25:47 +10:00
parent f8f75dc091
commit 9430a99f2b
9 changed files with 554 additions and 416 deletions

@ -1 +1 @@
Subproject commit 9143dcb7f8fd9cd3ae0bc179b94fced5efd8667f Subproject commit a9f5915a3275f5ffbafa0994bb97c5846aab826c

View File

@ -7,6 +7,8 @@
; ;
;************************************************************* ;*************************************************************
DISPLAY "\r\n/=====================[EXP part]=====================\\"
;*************************************** ;***************************************
;*********** BEGIN EXPANSION *********** ;*********** BEGIN EXPANSION ***********
;*************************************** ;***************************************
@ -243,9 +245,22 @@ ID_SPRINTER: DB 'Firmware v'
BoardID: BoardID:
.start: WORD BoardID_start ; BoardID_start .start: WORD BoardID_start ; BoardID_start
.end: WORD BoardID_end ; BoardID_end .end: WORD BoardID_end ; BoardID_end
;#######################################################################;
;#######################################################################;
;-----------------------------------------------------------------------;
; ROM-Disk pages ; [x]  ªâ¨¢¨à®¢ ­ ROM-DISK
ROM_DISK.Pages.Number:
BYTE ROM_DISK.Pages.Size ; ç¨á«® áâà ­¨æ
; ã áâà ­¨æ ¢ëáâ ¢«¥­ bit4 ¤«ï ª®à४⭮© ¯®¤áâ ­®¢ª¨
;(¯®¤à®¡­¥¥ ¢ sp2000.inc - <20>®àâ ã¯à ¢«¥­¨ï áâà ­¨æ ¬¨ <20>‡“)
ROM_DISK.Pages: ; áâà ­¨æë ROM-Disk
ABYTE #10 #05,#06,#07,#09,#0A,#0B ; 98304 bytes
.Size EQU $-ROM_DISK.Pages
;-----------------------------------------------------------------------;
;#######################################################################;
; ;=======================================
; BLOCK #100-$,0
;======================================= ;=======================================
@ -1304,48 +1319,39 @@ RESTARTS_PROG: ; !TODO LDConf
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
;----------------------------[Setup Starter]----------------------------; ;----------------------------[Setup Starter]----------------------------;
MODULE Setup_Starter MODULE Setup_Starter
; ¯à®£à ¬¬ , à §¬¥é ¥¬ ï ¯®  ¤à¥áã 0C000h ; ¯à®£à ¬¬ , à §¬¥é ¥¬ ï ¯®  ¤à¥áã #C000 ¤«ï § ¯ã᪠ Setup
; ¤«ï § ¯ã᪠ Setup Start: DISP COMPILE_ADDR.SETUP_STARTER
Start: Exec: LD A,CNF_PORT.CNF_0 + ROM.EXTENSION
DISP COMPILE_ADDR.SETUP_STARTER OUT (SYS_PORT.ROM),A
Exec: LD A,CNF_PORT.CNF_0 + ROM.EXTENSION ;
OUT (SYS_PORT.ROM),A LD HL,ROM_MAP.SETUP
LD DE,MEM_MAP.SETUP
LD HL,ROM_MAP.SETUP LD BC,BLOCK_Setup.Length
LD DE,MEM_MAP.SETUP LDIR
LD BC,BLOCK_Setup.Length ;
LDIR LD A,CNF_PORT.CNF_0 + ROM.BIOS
OUT (SYS_PORT.ROM),A
LD A,CNF_PORT.CNF_0 + ROM.BIOS
OUT (SYS_PORT.ROM),A
;-----------[Check SPACE] ;-----------[Check SPACE]
LD A,Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF ; !HARDCODE ; ¢ CF ¯¥à¥¤ ñâáï ­ ¦ â  «¨ ª« ¢¨è  SPACE. CF=0: ª« ¢¨è  ­ ¦ â 
LD BC,Port_All_Mode ; keyboard int & acc off ; ¯®â®¬ ¯à®¢¥àï¥âáï ¢ main.asm [space_check] ¨ ¥á«¨ ­ ¦ â ,
OUT (C),A ; â® ¯à®¨á室¨â ¨£­®à ¯ à ¬¥âà  "<22>ëáâàë© áâ àâ <20>‡“"
LD A,high ZXKeys.Line_7 ; ¢® ¢à¥¬ï ¯¥à¥§ £à㧪¨ ¢ [Check Quick Start ROM]
IN A,(ZXKeys) LD BC,Port_All_Mode
CPL IN H,(C) ; ¨«¨ LD H,#FF
AND 1 LD A,Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF
; ¢ ॣ¨áâॠA ¯¥à¥¤ ñâáï ­ ¦ â  «¨ ª« ¢¨è  SPACE. OUT (C),A ; keyboard int & acc off
; ¯®â®¬ ¯à®¢¥àï¥âáï ¢ main.asm [space_check] LD A,high ZXKeys.Line_7
; ¨ ¥á«¨ ­ ¦ â , â® ¯à®¨á室¨â ¨£­®à ¯ à ¬¥âà  IN A,(ZXKeys)
; "<22>ëáâàë© áâ àâ <20>‡“" ¢® ¢à¥¬ï ¯¥à¥§ £à㧪¨ RRA ; CF=0 ª« ¢¨è  ­ ¦ â 
EX AF,AF'
LD A,#FF ; !HARDCODE
OUT (C),A ; keyboard int & acc on, zx_screen & original waits off (for conf >= 3.05)
EX AF,AF'
;----------------------[] ;----------------------[]
DI OUT (C),H
POP HL ;  ¤à¥á ¢®§¢à â  ¢ EXP ¨§ SETUP DI
; LD SP,#8000 ;!HARDCODE POP HL ;  ¤à¥á ¢®§¢à â  ¢ EXP ¨§ SETUP
; PUSH HL JP SETUP_MAIN
; PUSH AF ENT
JP SETUP_MAIN
ENT
Size EQU $-Setup_Starter.Start Size EQU $-Setup_Starter.Start
ENDMODULE ENDMODULE
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<; ;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
@ -1490,29 +1496,37 @@ kbd_loop2:
AND A AND A
RET RET
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;
;----------------------------------------------------------------------;
; DE - ç áâ®â 
; HL - ¯à®¤®«¦¨â¥«ì­®áâì
BEEP: LD A,#10
CALL .beep_loop
;
;XOR A
CALL .beep_loop
;
DEC HL
LD A,H
OR L
JR NZ,BEEP
RET
;
.beep_loop: OUT (ZX_Beeper),A
LD B,D
LD C,E
;
.loop: DEC BC
LD A,B
OR C
JR NZ,.loop
RET
;----------------------------------------------------------------------;
;#######################################################################; ;#######################################################################;
;#######################################################################;
;-----------------------------------------------------------------------;
; ROM-Disk pages ; [x]  ªâ¨¢¨à®¢ ­ ROM-DISK
_mInfoALIGN 256,#FF
; BLOCK #3F00-$,#FF
ROM_DISK.Pages.Number:
BYTE ROM_DISK.Pages.Size ; ç¨á«® áâà ­¨æ
; ã áâà ­¨æ ¢ëáâ ¢«¥­ bit4 ¤«ï ª®à४⭮© ¯®¤áâ ­®¢ª¨
;(¯®¤à®¡­¥¥ ¢ sp2000.inc - <20>®àâ ã¯à ¢«¥­¨ï áâà ­¨æ ¬¨ <20>‡“)
ROM_DISK.Pages: ; áâà ­¨æë ROM-Disk
ABYTE #10 #05,#06,#07,#09,#0A,#0B ; 98304 bytes
.Size EQU $-ROM_DISK.Pages
;-----------------------------------------------------------------------;
;#######################################################################;
;

View File

@ -63,14 +63,15 @@
; H - ¢ëá®â , L - è¨à¨­  ; H - ¢ëá®â , L - è¨à¨­ 
;============================================================= ;=============================================================
MACRO CORRECT_SCR_40 ;[x] ¢ª«î稫 31/10/23, ç¨áâ® ­  •í««®ããã㨨¨­ MACRO CORRECT_SCR_40_FORWARD ;[x] ¢ª«î稫 31/10/23, ç¨áâ® ­  •í««®ããã㨨¨­
EX AF,AF' EX AF,AF'
JR C,.LLL JR C,.LLL
INC D ; ०¨¬ 40 INC D ; ०¨¬ 40
.LLL: EX AF,AF' .LLL: EX AF,AF'
ENDM ; ENDM ;
MACRO CORRECT_SCR_40_BACK
MACRO CORRECT_SCR_40_BACKWARD
EX AF,AF' EX AF,AF'
JR C,.LLL JR C,.LLL
DEC D ; ०¨¬ 40 DEC D ; ०¨¬ 40
@ -158,7 +159,7 @@ LP_PRINT_ALL: CALL LP_BEG_P
INC L INC L
LD (HL),A LD (HL),A
DEC L DEC L
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -181,7 +182,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
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -206,7 +207,7 @@ LP_PRINT_ATR: CALL LP_BEG_P
INC L INC L
LD (HL),C LD (HL),C
DEC L DEC L
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -237,7 +238,7 @@ LP_PRINT_LINE: CALL LP_BEG_P
INC L INC L
LD (HL),A LD (HL),A
DEC L DEC L
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -260,7 +261,7 @@ LP_PRINT_LINE2: CALL LP_BEG_P
OUT (C),D OUT (C),D
INC D INC D
LD (HL),A LD (HL),A
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -299,7 +300,7 @@ LP_PRINT_LINE3: CALL LP_BEG_P
INC L INC L
LD (HL),A LD (HL),A
DEC L DEC L
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -330,7 +331,7 @@ LP_PRINT_LINE4: CALL LP_BEG_P
.NoEndSymbol: EXX .NoEndSymbol: EXX
LD (HL),A LD (HL),A
INC D INC D
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -364,7 +365,7 @@ LP_PRINT_LINE5: CALL LP_BEG_P
LD (HL),A LD (HL),A
DEC L DEC L
INC D INC D
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -378,8 +379,8 @@ LP_END_P: LD A,SYS_PAGE
EXX EXX
RLA RLA
LD E,A LD E,A
LD (WIN_ID_0.reg_HL),HL ; ¬¥áâ® ¯¥ç â¨ LD (WIN_ID_0.LineAddr),HL ; ¬¥áâ® ¯¥ç â¨
LD (WIN_ID_0.reg_DE),DE LD (WIN_ID_0.ColumnRGADR_TXTMode),DE
LD (WIN_ID_0.reg_BC),BC LD (WIN_ID_0.reg_BC),BC
CALL LP_CLOSE_PG CALL LP_CLOSE_PG
EXX EXX
@ -413,7 +414,7 @@ LP_PRINT_LINE6: CALL LP_BEG_P
EXX EXX
LD (HL),A LD (HL),A
INC D INC D
CORRECT_SCR_40 CORRECT_SCR_40_FORWARD
DJNZ_NEXT_HL DJNZ_NEXT_HL
EXX EXX
DJNZ .loop DJNZ .loop
@ -466,15 +467,25 @@ LP_GET_PLACE: CALL LP_BEG_P
;-------------------------------------------------------------[#89, #8D] ;-------------------------------------------------------------[#89, #8D]
;--------------------------------------------------------[#8D] ;--------------------------------------------------------[#8D]
LP_CLS_WIN2: LD C,A LP_CLS_WIN2: LD C,A
JR CLS_WIN JR LP_CLS_WIN.START
;--------------------------------------------------------[#8D] ;--------------------------------------------------------[#8D]
;--------------------------------------------------------[#89] ;--------------------------------------------------------[#89]
LP_CLS_WIN: LD C,' ' LP_CLS_WIN: LD C,' '
;---------------- -----------------------------[#89] ;---------------- -----------------------------[#89]
CLS_WIN: CALL LP_BEG_P .START: CALL LP_BEG_P
LD (SYS_PAGE.SYS_WORK1),BC ; á®åà ­¨âì æ¢¥â ; !TODO ¨á¯®«ì§®¢ âì ¯¥à¥¬¥­­ë¥ ®ª­  CALL .CLS
PUSH DE JP LP_END_P.SYS_PAGE
; ;
.CLS: LD (SYS_PAGE.SYS_WORK1),BC ; á®åà ­¨âì æ¢¥â ; !TODO ¨á¯®«ì§®¢ âì ¯¥à¥¬¥­­ë¥ ®ª­ 
PUSH DE
; [ ] 02/04/2025 ¯à®¢¥àª  ­  ¯à¥¢ë襭¨¥ à §¬¥à  ®ª­ 
EXX
LD A,B
EXX
CP L
JR NC,.loop1
LD L,A
;
.loop1: CALL LP_SET_CUR .loop1: CALL LP_SET_CUR
PUSH DE PUSH DE
EXX EXX
@ -492,6 +503,7 @@ CLS_WIN: CALL LP_BEG_P
LD (HL),B LD (HL),B
DEC L DEC L
INC D INC D
CORRECT_SCR_40_FORWARD
EXX EXX
DJNZ .loop2 DJNZ .loop2
; ;
@ -503,8 +515,7 @@ CLS_WIN: CALL LP_BEG_P
JR NZ,.loop1 JR NZ,.loop1
; ;
POP DE POP DE
CALL LP_SET_CUR JP LP_SET_CUR
JP LP_END_P.SYS_PAGE
;-------------------------------------------------------------[#89, #8D] ;-------------------------------------------------------------[#89, #8D]
; ;
@ -610,9 +621,6 @@ LP_SIZE: CALL LP_OPEN_PG
CALL LP_CLOSE_PG CALL LP_CLOSE_PG
RET NZ RET NZ
; txt 40 ; txt 40
; LD A,E
; ADD A,A
; LD E,A
SLA E SLA E
RET RET
; ;
@ -672,78 +680,6 @@ LP_SET_CUR: ; LP_AT_D:
RET 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
DEC HL
PUSH BC
PUSH DE
EXX
PUSH BC
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 ; ¢áî áâப㠮ª­  áªà®««¨¬
CALL LP_SCROLL_UP.RUN
EXX
LD C," "
;
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,(WIN_ID_0.V_END)
DEC L
DEC L
DEC L
LD H,#C3 ;!HARDCODE ᬥ饭¨¥ ¢ áâà ­¨æ¥ 3 ª ­ ç «ã ®¯¨á â¥«¥© íªà ­ 
;
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
CORRECT_SCR_40
EXX
DJNZ .loop_cl_line
;
POP HL
POP BC
EXX
POP DE
POP BC
POP HL
;
LD A,SYS_PAGE
OUT (SLOT3),A
RET
; ¢ëç¨á«¥­¨¥ ­®¢®£® ¬¥áâ  ; ¢ëç¨á«¥­¨¥ ­®¢®£® ¬¥áâ 
LP_NEXT_HL: LD A,SYS_PAGE LP_NEXT_HL: LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
@ -771,13 +707,13 @@ LP_NEXT_HL: LD A,SYS_PAGE
LP_BEG_P: EX AF,AF' LP_BEG_P: EX AF,AF'
EXX EXX
CALL LP_OPEN_PG CALL LP_OPEN_PG
LD HL,(WIN_ID_0.reg_HL) LD HL,(WIN_ID_0.LineAddr)
LD DE,(WIN_ID_0.reg_DE) LD DE,(WIN_ID_0.ColumnRGADR_TXTMode)
LD BC,(WIN_ID_0.reg_BC) LD BC,(WIN_ID_0.reg_BC)
LD A,E LD A,E
AND A AND A
RRA RRA
OUT (PORT_Y),A ;OUT (PORT_Y),A
EXX EXX
EX AF,AF' EX AF,AF'
RET RET
@ -795,7 +731,8 @@ LP_INI_P: EX AF,AF'
LD A,(WIN_ID_0.USER.MODE) LD A,(WIN_ID_0.USER.MODE)
BIT 4,A BIT 4,A
JR Z,.NO_ZG ; ®âªàë⨥ £à ä¨ç¥áª®£® íªà ­  JR Z,.NO_ZG ; ®âªàë⨥ £à ä¨ç¥áª®£® íªà ­ 
LD DE,(SYS_PAGE.WIN_ZG) ; §­ ª®£¥­¥à â®à ;LD DE,(SYS_PAGE.WIN_ZG) ; §­ ª®£¥­¥à â®à
LD DE,ZG_ADDRESS ; §­ ª®£¥­¥à â®à
EXX EXX
EX AF,AF' EX AF,AF'
CALL WIN_SET_ZG.SET ;LP_SET_ZG1 ;!TODO á⮨⠫¨ ª ¦¤ë© à § § ª¨¤ë¢ âì èà¨äâ? CALL WIN_SET_ZG.SET ;LP_SET_ZG1 ;!TODO á⮨⠫¨ ª ¦¤ë© à § § ª¨¤ë¢ âì èà¨äâ?
@ -903,10 +840,12 @@ WIN_OPEN: CALL .Prepare
JP WIN_OPEN_W1 JP WIN_OPEN_W1
; ;
.Prepare: CALL LP_OPEN_PG .Prepare: CALL LP_OPEN_PG
LD (SYS_PAGE.WIN_MAP_SC),IX ; ª àâ  ®ª­ 
PUSH HL PUSH HL
PUSH DE PUSH DE
LD HL,(SYS_PAGE.WIN_MAP_SC) ;LD (SYS_PAGE.WIN_MAP_SC),IX ; ª àâ  ®ª­ 
;LD HL,(SYS_PAGE.WIN_MAP_SC)
PUSH IX
POP HL
LD DE,WIN_ID_0 LD DE,WIN_ID_0
LD BC,Window_UserVars LD BC,Window_UserVars
LDIR LDIR
@ -956,14 +895,14 @@ WIN_OPEN_W1: LD A,L
ADD A,A ADD A,A
ADD A,D ADD A,D
LD (IX+Window_Variables.H_END),A LD (IX+Window_Variables.H_END),A
LD (SYS_PAGE.WIN_MODE_SC),DE ; ¬¥áâ® ¯® £®à¨§®­â «¨ ¨ áâà ­¨æ  ¬®¤ë ;LD (SYS_PAGE.WIN_MODE_SC),DE ; ¬¥áâ® ¯® £®à¨§®­â «¨ ¨ áâà ­¨æ  ¬®¤ë
LD A,H LD A,H
AND #3F AND #3F
ADD A,A ADD A,A
ADD A,A ADD A,A
LD L,A LD L,A
LD H,#C3 LD H,A
LD (SYS_PAGE.WIN_MODE_SH),HL ; ¬¥áâ® ¯® ¢¥à⨪ «¨ á  ¤à¥á®¬ ;LD (SYS_PAGE.WIN_MODE_SH),HL ; ¬¥áâ® ¯® ¢¥à⨪ «¨ á  ¤à¥á®¬
LD (IX+Window_Variables.V_BEG),A LD (IX+Window_Variables.V_BEG),A
LD A,(IX+Window_Variables.USER.SIZE_V) LD A,(IX+Window_Variables.USER.SIZE_V)
ADD A,A ADD A,A
@ -971,7 +910,8 @@ WIN_OPEN_W1: LD A,L
ADD A,L ADD A,L
LD (IX+Window_Variables.V_END),A LD (IX+Window_Variables.V_END),A
; ;
LD L,(IX+Window_Variables.V_BEG) ;LD L,(IX+Window_Variables.V_BEG)
LD L,H
LD H,#C3 LD H,#C3
LD B,(IX+Window_Variables.USER.SIZE_V) ; à §¬¥à ¯® ¢¥à⨪ «¨ LD B,(IX+Window_Variables.USER.SIZE_V) ; à §¬¥à ¯® ¢¥à⨪ «¨
LD (IX+Window_Variables.WORK_1),0 LD (IX+Window_Variables.WORK_1),0
@ -1015,7 +955,7 @@ WIN_OPEN_W1: LD A,L
; ;
LD A,(IX+Window_Variables.MODE_E) LD A,(IX+Window_Variables.MODE_E)
AND 1 AND 1
OUT (RGMOD),A OUT (SCREEN_SWITCH),A
;LD A,(IX+Window_Variables.MODE) ;LD A,(IX+Window_Variables.MODE)
;BIT 4,A ;BIT 4,A
CALL LP_CLOSE_PG CALL LP_CLOSE_PG
@ -1023,8 +963,11 @@ WIN_OPEN_W1: LD A,L
CALL LP_INI_P CALL LP_INI_P
;LD A,(SYS_PAGE.WIN_MODE_SC) ;LD A,(SYS_PAGE.WIN_MODE_SC)
;OUT (RGMOD),A ;OUT (RGMOD),A
CALL LP_SIZE ; ­¨£¤¥ ­¥ ¡ë«® ®¯¨á ­®
XOR A CALL LP_SIZE
; DE - à §¬¥àë ®ª­ 
;
XOR A ;!TODO ­®¬¥à ®ª­ 
RET RET
; ;
@ -1278,12 +1221,14 @@ LP_SCROLL_UP: DEC E
CALL LP_OPEN_PG CALL LP_OPEN_PG
; ;
LD B,E LD B,E
LD E,0 ; ¢áî áâப㠮ª­  áªà®««¨¬ LD E,0 ; ¢áî áâப㠮ª­  áªà®««¨¬
CALL .RUN CALL .RUN
.EXIT: JP LP_CLOSE_PG JP LP_CLOSE_PG
; ;
; ;
.RUN: CALL LP_SET_CUR ; ¢ëç¨á«¨âì ¯¥à¥¬¥­­ë¥ ¤«ï áâப¨ .RUN: CALL LP_SET_CUR ; ¢ëç¨á«¨âì ¯¥à¥¬¥­­ë¥ ¤«ï áâப¨
PUSH IX
LD IX,(WIN_ID_0.USER.SIZE_H)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ®â«¨ç¨¥ ®â LP_SCROLL_DN ; ®â«¨ç¨¥ ®â LP_SCROLL_DN
LD A,(WIN_ID_0.V_END) LD A,(WIN_ID_0.V_END)
@ -1305,20 +1250,26 @@ LP_SCROLL_UP: DEC E
ADD L ADD L
LD L,A LD L,A
; ;
LD A,C LD A,C ; LD A,(WIN_ID_0.V_END)
CP L CP L
RET C ; ¥á«¨ ª®­¥æ, â® ¢ë室 JR C,.exit ; ¥á«¨ ª®­¥æ, â® ¢ë室
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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) ;XH
LD A,XL ; WIN_ID_0.USER.SIZE_H
; LD A,SYS_PAGE
; OUT (SLOT3),A
; 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
; OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
; ;
EXX EXX
LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨ LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨
@ -1327,6 +1278,7 @@ LP_SCROLL_UP: DEC E
INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ  INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
LDD LDD
;
OUT (PORT_Y),A OUT (PORT_Y),A
INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ  INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
@ -1335,6 +1287,7 @@ LP_SCROLL_UP: DEC E
; ;
POP BC POP BC
DJNZ .loop2 DJNZ .loop2
.exit: POP IX
RET RET
@ -1356,6 +1309,8 @@ LP_SCROLL_DN: DEC E ;!FIXIT
; ;
; ;
.RUN: CALL LP_SET_CUR .RUN: CALL LP_SET_CUR
PUSH IX
LD IX,(WIN_ID_0.USER.SIZE_H)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO
; ®â«¨ç¨¥ ®â LP_SCROLL_UD ; ®â«¨ç¨¥ ®â LP_SCROLL_UD
LD A,(WIN_ID_0.V_BEG) LD A,(WIN_ID_0.V_BEG)
@ -1380,18 +1335,24 @@ LP_SCROLL_DN: DEC E ;!FIXIT
LD A,C LD A,C
CP L ; .CONT: L >= A CP L ; .CONT: L >= A
JR Z,.CONT JR Z,.CONT
RET NC ; ¥á«¨ ª®­¥æ, â® ¢ë室 JR NC,.exit ; ¥á«¨ ª®­¥æ, â® ¢ë室
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.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,XL ; WIN_ID_0.USER.SIZE_H
; LD A,SYS_PAGE
; OUT (SLOT3),A
; 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
; OUT (SLOT3),A ; ®âªàëâì áâà ­¨æã ¤«ï ¯¥à¥­®á 
; ;
EXX EXX
LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨ LD A,D ; ¯®«ãç¨âì ¯®àâ ­ ç «  áâப¨
@ -1400,6 +1361,7 @@ LP_SCROLL_DN: DEC E ;!FIXIT
INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ  INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
LDD LDD
;
OUT (PORT_Y),A OUT (PORT_Y),A
INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ  INC A ; á«¥¤ãî饥 §­ ç¥­¨¥ ¯®àâ 
LDI LDI
@ -1408,6 +1370,7 @@ LP_SCROLL_DN: DEC E ;!FIXIT
; ;
POP BC POP BC
DJNZ .loop2 DJNZ .loop2
.exit: POP IX
RET RET
@ -1458,29 +1421,60 @@ WIN_PUT_SYM: AND A
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 ; [ ] 31/03/2025 ¥á«¨ B=0, â® ª« ¤ñ¬ ⮫쪮 ᨬ¢®«
EXX ; ¥á«¨ B=1, â® ª« ¤ñ¬ ᨬ¢®« á  âਡã⮬
LD (HL),A ; ᨬ¢®«
INC L ; LD A,L
EXX ; EXX
LD A,H ; LD (HL),A
EXX ; INC L
LD (HL),A ; EXX
DEC L ; ;  âਡãâ
DEC L ; LD A,H
EXX ; EXX
; LD (HL),A
; DEC L
; DEC L
; EXX
; ; èà¨äâ
; LD A,B
; EXX
; LD (HL),A
; INC L
; EXX
; JP LP_END_P
;
; èà¨äâ
LD A,B LD A,B
OR A
JR Z,.onlySymbol
DEC B
JR Z,.noChangeZG
;
EXX EXX
DEC L
LD (HL),A LD (HL),A
INC L INC L
EXX EXX
;  âਡãâ
.noChangeZG: LD A,H
EXX
INC L
LD (HL),A
DEC L
EXX
; ᨬ¢®«
.onlySymbol: LD A,L
EXX
LD (HL),A
EXX
JP LP_END_P JP LP_END_P
; HL - à §¬¥à ®ª­  ; HL - à §¬¥à ®ª­ 
; DE - ¯®«®¦¥­¨¥ ®ª­  ; DE - ¯®«®¦¥­¨¥ ®ª­ 
; A - ­®¬¥à ®ª­  ; A - ­®¬¥à ®ª­ 
@ -1506,72 +1500,62 @@ WIN_MOVE: AND A
; DE - ¬¥áâ® á®å࠭塞®£® ®ª­  ; DE - ¬¥áâ® á®å࠭塞®£® ®ª­ 
; IX -  ¤à¥á á®å࠭塞®£® ®ª­ , ¢ áâà ­¨æ¥ 4000h ; IX -  ¤à¥á á®å࠭塞®£® ®ª­ , ¢ áâà ­¨æ¥ 4000h
; € - ­®¬¥à ®ª­ , B - áâà ­¨æ  ; € - ­®¬¥à ®ª­ , B - áâà ­¨æ 
WIN_COPY: WIN_COPY: AND A
AND A
SCF SCF
RET NZ RET NZ
WIN_COPY_WIN1: WIN_COPY_WIN1: CALL LP_BEG_P
CALL LP_BEG_P
IN A,(SLOT1) IN A,(SLOT1)
PUSH AF PUSH AF
;
CALL LP_SET_CUR CALL LP_SET_CUR
LD (SYS_PAGE.SYS_WORK1),SP LD (SYS_PAGE.SYS_WORK1),SP
LD A,B LD A,B
OUT (SLOT3),A OUT (SLOT3),A
LD A,#50 LD A,#50
OUT (SLOT1),A OUT (SLOT1),A
;
EXX EXX
RES 7,H RES 7,H
LD C,D LD C,D
EXX EXX
;
.COPY_loop2: .COPY_loop2: LD A,L
LD A,L
EXX EXX
LD B,A LD B,A
; ADD A,A
ADD A,A ADD A,XL
ADD A,XL LD XL,A
LD XL,A JR NC,.NO_INC_XH
JR NC,.NO_INC_XH ;
INC XH INC XH
.NO_INC_XH: .NO_INC_XH: LD SP,IX
LD SP,IX LD A,C
; ADD A,B
LD A,C .COPY_loop: DEC A
ADD A,B OUT (PORT_Y),A
.COPY_loop: LD E,(HL)
DEC A INC L
OUT (PORT_Y),A LD D,(HL)
LD E,(HL) DEC L
INC L PUSH DE
LD D,(HL) DJNZ .COPY_loop
DEC L ;
PUSH DE INC HL
DJNZ .COPY_loop INC HL
; INC HL
INC HL INC HL
INC HL
INC HL
INC HL
EXX EXX
DEC H DEC H
JR NZ,.COPY_loop2 JR NZ,.COPY_loop2
; ;
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD SP,(SYS_PAGE.SYS_WORK1) LD SP,(SYS_PAGE.SYS_WORK1)
; ;
POP AF POP AF
OUT (SLOT1),A OUT (SLOT1),A
JP LP_END_P.short JP LP_END_P.short
;AND A ;
;RET
; HL - à §¬¥à á®å࠭塞®£® ®ª­  ; HL - à §¬¥à á®å࠭塞®£® ®ª­ 
; DE - ¬¥áâ® á®å࠭塞®£® ®ª­  ; DE - ¬¥áâ® á®å࠭塞®£® ®ª­ 
@ -1633,42 +1617,70 @@ WIN_RESTORE: AND A
;!FIXIT ­¥â ®¯¨á ­¨ï, ­¥¤®¤¥« ­ . <20>¥ç âì á ã¯à ¢«ïî騬¨ ᨬ¢®« ¬¨ ; <20>¥ç âì á ã¯à ¢«ïî騬¨ ᨬ¢®« ¬¨ ¢ ª®­á®«ì
;------------------------------------------------------------------[#E0] ;------------------------------------------------------------------[#E0]
LP_PR_LINE_DIR: LP_PR_LINE_DIR:
;!TODO ­¥¤®¤¥« ­  ;>------------------------------------------------[BELL]
.BELL: ; ... .BELL: EXX
; ... PUSH HL
PUSH BC
;
LD DE,1200
LD HL,4
CALL BEEP
;
POP BC
POP HL
EXX
JR .loop JR .loop
;!TODO ­¥¤®¤¥« ­  ;-------------------------------------------------[BELL]
.BACK: LD A,SYS_PAGE
OUT (SLOT3),A ;>------------------------------------------------[Backspace]
; .BACK: LD A,(WIN_ID_0.H_BEG)
LD A,(WIN_ID_0.H_BEG)
CP D CP D
JR Z,.loop JR Z,.loop
INC B INC B
DEC D DEC D
CORRECT_SCR_40_BACK CORRECT_SCR_40_BACKWARD
JP .loop JP .loop
; ;>------------------------------------------------[Backspace]
;
.EXIT_SpecSymbol:
DEC HL
CALL LP_END_P
POP IX
SCF
RET
;
.EXIT: POP IX .EXIT: POP IX
JP LP_END_P JP LP_END_P
;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥, ¥á«¨ A != 0 ; A -  âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®«  ¥á«¨ CF'
; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®© ; CF - XY-mode
; B - à §¤¥«¨â¥«ì ; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥, ¥á«¨ CF=1
; A - mode ; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
; B - à §¤¥«¨â¥«ì
; IY - ¤¢  ᯥæ.ᨬ¢®«  ¤«ï ¢ë室  á CF=1. „®«¦­ë ¡ëâì à ¢­ë B, ¥á«¨ ­¥ ­ã¦­ë
; A' - 梥⠪®­á®«¨ (¨á¯®«ì§ã¥âáï ¯à¨ áªà®««¥ ¨ ®ç¨á⪥ ®ª­ )
; CF' - ¢ë¢®¤¨âì ᨬ¢®« á  âਡãâ ¬¨
;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
.START: PUSH IX .START: PUSH IX
AND A ; check mode for DE LD XL,A ;  âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®« 
;
EX AF,AF'
PUSH AF ; 梥⠪®­á®«¨, attr-mode
EX AF,AF'
; ;
IN A,(SLOT3) IN A,(SLOT3)
LD C,A LD C,A
CALL LP_BEG_P CALL LP_BEG_P
CALL NZ,LP_SET_CUR ; mode for DE CALL C,LP_SET_CUR ; mode for DE
; POP AF ; 梥⠪®­á®«¨, attr-mode
LD (SYS_PAGE.SYS_WORK2),A ; 梥⠪®­á®«¨
EXX EXX
LD C,0
JR NC,.loop
INC C ; C' - attr flag. ¢ë¢®¤¨âì  âਡãâ
.loop: LD A,D .loop: LD A,D
OUT (PORT_Y),A OUT (PORT_Y),A
EXX EXX
@ -1679,7 +1691,12 @@ LP_PR_LINE_DIR:
LD XH,A LD XH,A
INC HL INC HL
CP B CP B
JP Z,.EXIT JR Z,.EXIT
CP YH
JR Z,.EXIT_SpecSymbol
CP YL
JR Z,.EXIT_SpecSymbol
;
EXX EXX
; ¯¥ç â ¥¬ë¥ ᨬ¢®«ë ; ¯¥ç â ¥¬ë¥ ᨬ¢®«ë
CP 14 CP 14
@ -1687,6 +1704,10 @@ LP_PR_LINE_DIR:
CP 7 CP 7
JR C,.print JR C,.print
; ã¯à ¢«ïî騥 ᨬ¢®«ë ; ã¯à ¢«ïî騥 ᨬ¢®«ë
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,XH
;
SUB 7 SUB 7
JR Z,.BELL ; A = 07 "BELL" JR Z,.BELL ; A = 07 "BELL"
DEC A DEC A
@ -1699,80 +1720,192 @@ LP_PR_LINE_DIR:
JR Z,.VertTab ; € = 11 "Vertical Tabulation" JR Z,.VertTab ; € = 11 "Vertical Tabulation"
DEC A DEC A
JR Z,.CLS ; € = 12 "Form feed" - à §àë¢ áâà ­¨æë, ­ ç «® ­®¢®£® «¨áâ , ¬®¦¥â à ¡®â âì ª ª VT JR Z,.CLS ; € = 12 "Form feed" - à §àë¢ áâà ­¨æë, ­ ç «® ­®¢®£® «¨áâ , ¬®¦¥â à ¡®â âì ª ª VT
DEC A ;DEC A
JR Z,.CR ; € = 13 "Carriage Return" ;JR Z,.CR ; € = 13 "Carriage Return"
; ¢ë¢®¤¨âì! ;>------------------------------------------------[CR]
; .CR: LD A,(WIN_ID_0.H_BEG)
LD D,A
LD A,(WIN_ID_0.SIZE_REL)
LD B,A
JP .loop
;-------------------------------------------------[CR]
;>------------------------------------------------[PRINT]
.print: LD A,#50 .print: LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
LD A,XH LD A,XH
LD (HL),A LD (HL),A
; ¢ë¢®¤¨âì  âਡãâ
RR C ; C' - attr flag
JR NC,.NoPutAttr
;
INC L
LD A,XL
LD (HL),A
DEC L
.NoPutAttr: RL C ; C' - attr flag
INC D INC D
.next_full: CORRECT_SCR_40 .next_full: CORRECT_SCR_40_FORWARD
.next: DJNZ .loop .next: DJNZ .loop
CALL LP_NEXT_HL_DIR CALL LP_NEXT_HL_DIR
JP .loop JP .loop
;-------[TAB] ;!FIXIT § ¯®«­ï¥â ¯à®¡¥« ¬¨ ;-------------------------------------------------[PRINT]
.TAB: LD A,SYS_PAGE
OUT (SLOT3),A ;>------------------------------------------------[TAB]
LD A,(WIN_ID_0.H_BEG) .TAB: LD A,(WIN_ID_0.H_BEG)
SUB D SUB D
NEG NEG
AND %0000'0111 AND %0000'0111
NEG NEG
ADD A,8 ADD A,8
CP B
JR C,.keep_A
;
LD A,B
DEC A
.keep_A: ;NEG
PUSH BC ; save C' - attr flag
LD C,A LD C,A
LD A,#50 EX AF,AF'
OUT (SLOT3),A JR C,.LLL
; ;
.loop_tab: LD (HL),' ' EX AF,AF'
INC D ADD A,A ; ०¨¬ 40
DEC B EX AF,AF'
JR Z,.end_Line .LLL: EX AF,AF'
DEC C
JR NZ,.loop_tab
JR .next_full
; ;
.end_Line: LD A,SYS_PAGE .tabNxt: ADD A,D
OUT (SLOT3),A
LD A,(WIN_ID_0.H_BEG)
LD D,A LD D,A
LD A,(WIN_ID_0.SIZE_REL) LD A,B
SUB C ; set XL
POP BC ; restore C' - attr flag
LD B,A LD B,A
JP .LineFeed_go JP .loop
;-------[TAB end]
;
;-------[Line Feed]
.VertTab: ;
.LineFeed: LD A,SYS_PAGE
OUT (SLOT3),A
; ;
.LineFeed_go: LD A,4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª  ;-------------------------------------------------[TAB]
;>------------------------------------------------[Line Feed]
.VertTab: ;
.LineFeed: LD A,4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
ADD L ADD L
LD L,A LD L,A
; ;
LD A,(WIN_ID_0.V_END) LD A,(WIN_ID_0.V_END)
CP L CP L
CALL C,LP_NEXT_HL_DIR.end_line CALL C,LP_NEXT_HL_DIR.end_line
JP .loop
;-------[Line Feed end]
;
.CLS: ; ...
;!TODO CLS
JP .loop JP .loop
; ;-------------------------------------------------[Line Feed]
.CR: LD A,SYS_PAGE
;>------------------------------------------------[Form feed]
.CLS: PUSH BC ; C' - attr flag
EXX
PUSH BC
PUSH HL
PUSH DE
;
LD A,(SYS_PAGE.SYS_WORK2) ; 梥⠪®­á®«¨
LD B,A
LD DE,0
LD HL,(WIN_ID_0.USER.SIZE_H) ; get WIN XY
LD A,(WIN_ID_0.SIZE_REL)
LD L,A
LD C," "
CALL LP_CLS_WIN.CLS
;
POP DE
POP HL
POP BC
EXX
LD A,B
POP BC ; C' - attr flag
LD B,A
JP .loop
;-------------------------------------------------[Form feed]
;------------------------------------------------------------------[#E0]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LP_NEXT_HL_DIR: LD A,SYS_PAGE
OUT (SLOT3),A 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
; ;
LD A,(WIN_ID_0.H_BEG) .no_end_line: LD A,(WIN_ID_0.H_BEG)
LD D,A LD D,A
LD A,(WIN_ID_0.SIZE_REL) LD A,(WIN_ID_0.SIZE_REL)
LD B,A LD B,A
RET
; ;
;LD A,#50 .end_line: LD A,L
;OUT (SLOT3),A SUB 4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
JP .loop LD L,A
;------------------------------------------------------------------[#E0] PUSH HL
DEC L
PUSH BC
PUSH DE
EXX
PUSH BC
PUSH HL
PUSH DE
LD A,(WIN_ID_0.V_BEG)
LD D,A
LD A,(WIN_ID_0.USER.SIZE_V)
LD B,A
LD E,0 ; ¢áî áâப㠮ª­  áªà®««¨¬
CALL LP_SCROLL_UP.RUN
;
LD A,SYS_PAGE
OUT (SLOT3),A
LD C," "
LD A,(SYS_PAGE.SYS_WORK2) ; 梥⠪®­á®«¨
LD B,A
LD A,(WIN_ID_0.USER.SIZE_V)
DEC A
LD D,A
LD E,0
LD HL,(WIN_ID_0.SIZE_REL)
LD H,1
LD C," "
CALL LP_CLS_WIN.CLS
;
POP DE
POP HL
POP BC
EXX
POP DE
POP BC
POP HL
RET
;
; 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
; CORRECT_SCR_40_FORWARD
; EXX
; DJNZ .loop_cl_line
; LD A,SYS_PAGE
; OUT (SLOT3),A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LP_OPEN_PG: IN A,(SLOT3) LP_OPEN_PG: IN A,(SLOT3)

View File

@ -1025,83 +1025,69 @@ BLK_RD_WR:
; DE - ­®¬¥à ᥪâ®à  (áç¨â âì ¯® 256b ᥪâ®à) ; DE - ­®¬¥à ᥪâ®à  (áç¨â âì ¯® 256b ᥪâ®à)
; B - ç¨á«® ᥪâ®à®¢ ; B - ç¨á«® ᥪâ®à®¢
; A' - à §¬¥à ᥪâ®à  (1 - 256b, 2 - 512 b) ; A' - à §¬¥à ᥪâ®à  (1 - 256b, 2 - 512 b)
ROM_DISK: ROM_DISK: EX AF,AF'
; á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨©
;LD A,R
EX AF,AF'
LD C,0 ; áç¥â稪 LD C,0 ; áç¥â稪
DEC A DEC A
JR Z,.loop JR Z,.loop
;JR Z,.start ;
DEC A DEC A
SCF SCF
RET NZ RET NZ
;
EX DE,HL EX DE,HL
ADD HL,HL ADD HL,HL
EX DE,HL EX DE,HL
LD A,B LD A,B
ADD A,A ADD A,A
LD B,A LD B,A
;!!!!!
RET C RET C
;
DI DI
CALL .loop CALL .loop
; ; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨©
; EX AF,AF'
; JP PO,.noInterrupts
; EI
; .noInterrupts:
; EX AF,AF'
; ;
RET C RET C
;
AND A AND A
RR D RR D
RR E RR E
XOR A XOR A
RET RET
;
; .start:
; DI
; CALL .loop
; ; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨©
; EX AF,AF'
; JP PO,.noInterrupts2
; EI
; .noInterrupts2:
; EX AF,AF'
; ;
; RET
.loop: PUSH DE ; ­®¬¥à ᥪâ®à  .loop: PUSH DE ; ­®¬¥à ᥪâ®à 
PUSH BC PUSH BC
;
LD A,E LD A,E
AND #3F ; ADRESS in ROM-Page AND #3F ; ADRESS in ROM-Page
PUSH AF ; á®åà ­¨âì  ¤à¥á PUSH AF ; á®åà ­¨âì  ¤à¥á
;
EX DE,HL ; DE -  ¤à¥á ¡ãä¥à  EX DE,HL ; DE -  ¤à¥á ¡ãä¥à 
ADD HL,HL ADD HL,HL
ADD HL,HL ; H - ­®¬¥à ¡ ­ª¨ ADD HL,HL ; H - ­®¬¥à ¡ ­ª¨
; [ ] ¡¥§ ¯à¨¢ï§ª¨ ஬-¤¨áª  ª align 256
LD A,(ROM_DISK.Pages.Number) ;LD A,(ROM_DISK.Pages.Number)
INC H ;INC H
CP H ;CP H
LD L,H ;
LD H,high ROM_DISK.Pages.Number ; ROM-Disk pages! LD C,H
LD B,0
LD HL,ROM_DISK.Pages
ADD HL,BC
;
LD A,(ROM_DISK.Pages.Number) ; rdlow-ok
INC C
CP C
;
;LD L,H
;LD H,high ROM_DISK.Pages.Number ; ROM-Disk pages!
;
LD A,(HL) ; PAGE-ROM LD A,(HL) ; PAGE-ROM
POP HL ; ¢®ááâ ­®¢¨âì  ¤à¥á ¢ ROM-Page POP HL ; ¢®ááâ ­®¢¨âì  ¤à¥á ¢ ROM-Page
LD L,0 ; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®© LD L,0 ; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®©
JR C,.errorExit ; ROM-Disk-end JR C,.errorExit ; ROM-Disk-end
; DE - ¡ãä¥à ; DE - ¡ãä¥à
; HL -  ¤à¥á ¢ ROM ; HL -  ¤à¥á ¢ ROM
; B - ç¨á«® ᥪâ®à®¢ ; B - ç¨á«® ᥪâ®à®¢
; A - ROM-Page ; A - ROM-Page
.loopRead: .loopRead: PUSH HL ; ®âªã¤ 
PUSH HL ; ®âªã¤ 
PUSH DE ; ªã¤  PUSH DE ; ªã¤ 
LD HL,-.stackDepth-.readProcedure.size ; memory stack use! LD HL,-.stackDepth-.readProcedure.size ; memory stack use!
@ -1115,10 +1101,9 @@ ROM_DISK:
LDIR ; ¯à®£à ¬¬  ­  á⥪¥ LDIR ; ¯à®£à ¬¬  ­  á⥪¥
LD BC,#100 ; ¤«¨­  ᥪâ®à  LD BC,#100 ; ¤«¨­  ᥪâ®à 
RET ; ¨á¯®«­¨âì ¯à®£à ¬¬ã .readProcedure, ­  á⥪¥  ¤à¥á  ¡ãä¥à  ¨ ROM RET ; ¨á¯®«­¨âì ¯à®£à ¬¬ã .readProcedure, ­  á⥪¥  ¤à¥á  ¡ãä¥à  ¨ ROM
; DE - next address ; DE - next address
; HL - ROM address ; HL - ROM address
.readNext: .readNext: POP BC ; ç¨á«® ᥪâ®à®¢
POP BC ; ç¨á«® ᥪâ®à®¢
INC C ; áç¥â稪 áç¨â ­­ëå ᥪâ®à®¢ INC C ; áç¥â稪 áç¨â ­­ëå ᥪâ®à®¢
DEC B ; ᥪâ®à  ª®­ç¨«¨áì? DEC B ; ᥪâ®à  ª®­ç¨«¨áì?
@ -1141,20 +1126,19 @@ ROM_DISK:
JP .loop ; ­ ç âì ¢á¥ á­®¢ ! JP .loop ; ­ ç âì ¢á¥ á­®¢ !
; ç⥭¨¥ § ª®­ç¥­® ; ç⥭¨¥ § ª®­ç¥­®
.normExit: .normExit: POP HL ; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥭¨¥
POP HL ; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥭¨¥
ADD HL,BC ; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á ADD HL,BC ; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á
EX DE,HL ; DE - á«¥¤.ᥪâ®à EX DE,HL ; DE - á«¥¤.ᥪâ®à
AND A AND A
RET RET
; ®è¨¡ª  ; ®è¨¡ª 
.errorExit: ; !TODO ᤥ« âì, ç⮡ ­  ¢ë室¥ ¯®ª §ë¢ «®áì ª®«¨ç¥á⢮ ¯à®ç¨â ­­ëå ᥪâ®à®¢ .errorExit: ; !TODO ᤥ« âì, ç⮡ ­  ¢ë室¥ ¯®ª §ë¢ «®áì ª®«¨ç¥á⢮ ¯à®ç¨â ­­ëå ᥪâ®à®¢
POP BC POP BC
POP DE POP DE
SCF SCF
RET RET
; ¯à®æ¥¤ãà , ¯¥à¥­®á¨¬ ï ­  á⥪ ¤«ï ç⥭¨ï ¨§ ROM-Disk ; ¯à®æ¥¤ãà , ¯¥à¥­®á¨¬ ï ­  á⥪ ¤«ï ç⥭¨ï ¨§ ROM-Disk
; ®áâ®à®¦­¥¥ á PUSH, ¥á«¨ ­ ¤® ¬­®£®, ⮠㢥«¨ç¨¢ © .stackDepth ; ®áâ®à®¦­¥¥ á PUSH, ¥á«¨ ­ ¤® ¬­®£®, ⮠㢥«¨ç¨âì .stackDepth
.readProcedure: .readProcedure:
POP DE ; ªã¤  POP DE ; ªã¤ 
POP HL ; ®âªã¤  POP HL ; ®âªã¤ 

View File

@ -254,8 +254,8 @@ INIT_SYS_ALL:
; ;
;;; init task's ;;; init task's
; ;
LD DE,ZG_ADDRESS ;  ¤à¥á §­ ª®£¥­¥à â®à  ;LD DE,ZG_ADDRESS ;  ¤à¥á §­ ª®£¥­¥à â®à 
LD (SYS_PAGE.WIN_ZG - #4000),DE ;LD (SYS_PAGE.WIN_ZG - #4000),DE
; ;
;-----------[new code start]------------; !!!!! ¯®á¬®âà¥âì-¯à¨ç¥á âì ;-----------[new code start]------------; !!!!! ¯®á¬®âà¥âì-¯à¨ç¥á âì
INIT_VSyncAndWaits: INIT_VSyncAndWaits:

View File

@ -1,5 +1,6 @@
; ;
; MODULE ROM_PART ; MODULE ROM_PART
DISPLAY "\r\n/=====================[ROM part]=====================\\"
;------------[Begin of ROM]------------- ;------------[Begin of ROM]-------------
ROM_START: ROM_START:
DI DI
@ -7,17 +8,17 @@ ROM_START:
;--------------------------------------- ;---------------------------------------
;--------------[checksum]--------------- ;--------------[checksum]---------------
BLOCK 4-$,#FF _mInfoBLOCK 4-$,#FF
Check_Sum: Check_Sum:
DB #FF,#FF,#FF,#FF ; ¬¥áâ® ¤«ï ª®­â஫쭮© á㬬ë DB #FF,#FF,#FF,#FF ; ¬¥áâ® ¤«ï ª®­â஫쭮© á㬬ë
;--------------------------------------- ;---------------------------------------
BLOCK #10-$,#FF _mInfoBLOCK #10-$,#FF
RET RET
;--------------------------------------- ;---------------------------------------
;!TODO ¯à¨ªàãâ¨âì ª ROM.BIOS ;!TODO ¯à¨ªàãâ¨âì ª ROM.BIOS
;----------------[int]------------------ ;----------------[int]------------------
BLOCK #38-$,#FF _mInfoBLOCK #38-$,#FF
; INT: PUSH BC ; INT: PUSH BC
; PUSH AF ; PUSH AF
@ -434,5 +435,13 @@ RET_TO_TRDOS:
_mInfoBLOCK #4000-$,#FF _mInfoBLOCK #4000-$,#FF
;======================================= ;=======================================
IFNDEF PREBUILD
DISPLAY ' -------------------[Main.asm]-------------------'
DISPLAY 'End code address: ',/A,MAIN_END_CODE_ADDRESS
DISPLAY 'Code size: ',/A,MAIN_END_CODE_ADDRESS + 1 - COMPILE_ADDR.MAIN
DISPLAY 'End buffers address: ',/A,memBUFFER.End - 1
DISPLAY 'Free memory: ',/A,#C000 - (memBUFFER.End-1) - STACK.Size
DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer
ENDIF
; ENDMODULE ;ROM_PART ; ENDMODULE ;ROM_PART
; ;

View File

@ -724,27 +724,27 @@ Ent EQU #0D
; ;
;================================ ;================================
BEEP: LD A,#10 ; BEEP: LD A,#10
OUT (ZX_Beeper),A ; OUT (ZX_Beeper),A
LD B,D ; LD B,D
LD C,E ; LD C,E
.loop1: DEC BC ; .loop1: DEC BC
LD A,B ; LD A,B
OR C ; OR C
JR NZ,.loop1 ; JR NZ,.loop1
XOR A ;LD A,#00 ; XOR A ;LD A,#00
OUT (ZX_Beeper),A ; OUT (ZX_Beeper),A
LD B,D ; LD B,D
LD C,E ; LD C,E
.loop2: DEC BC ; .loop2: DEC BC
LD A,B ; LD A,B
OR C ; OR C
JR NZ,.loop2 ; JR NZ,.loop2
DEC HL ; DEC HL
LD A,H ; LD A,H
OR L ; OR L
JR NZ,BEEP ; JR NZ,BEEP
RET ; RET
;COM_A EQU #19 Z84.SIO.Ch_A.Ctrl ;COM_A EQU #19 Z84.SIO.Ch_A.Ctrl
;DAT_A EQU #18 Z84.SIO.Ch_A.Data ;DAT_A EQU #18 Z84.SIO.Ch_A.Data

View File

@ -631,13 +631,12 @@ START:
CALL ZXMODE_SETUP CALL ZXMODE_SETUP
CALL XY_SCREEN CALL XY_SCREEN
;R06 ;R06 ;[Check Quick Start ROM]
LD BC,CMOS_CELL.BootUpParams.Mask.QuickStartROM ;#010E LD BC,CMOS_CELL.BootUpParams.Mask.QuickStartROM ;#010E
CALL GET_CMOS_VALUE CALL GET_CMOS_VALUE
POP BC POP BC
INC B RR C
DEC B JR NC,IGNORE_QuickStartROM ; १ã«ìâ â ¯à®¢¥àª¨ Space ¨§ exp.asm [Check SPACE]
JR NZ,IGNORE_QuickStartROM ; १ã«ìâ â ¯à®¢¥àª¨ Space ¨§ exp.asm [space_check]
PUSH AF PUSH AF
LD C,SLOT3 LD C,SLOT3
IN B,(C) IN B,(C)
@ -1646,47 +1645,45 @@ SETLAND:
LDIR LDIR
RET RET
;
; print boot drive number
PRINT_CHANEL: AND #0F
LD C,A
;
LD A,msgStrings.parPriIdeMA
JR Z,.print_chanel
;
LD A,msgStrings.parPriIdeSl
DEC C
JR Z,.print_chanel
;
LD A,msgStrings.parSecIdeMA
DEC C
JR Z,.print_chanel
;
LD A,msgStrings.parSecIdeSl
.print_chanel: CALL FindStringAddr
;CALL LP_GET_PLACE
;LD A,ScreenPOS.SUBNAME.POS
;SUB E
;LD B,A
LD B,0
LD D,#FF
JP LP_PRINT_LINE6
;
POSTMSC: CALL FindStringAddr
LD A,E
JP CPRINTZ
;
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
INCLUDE 'IM2_INT.asm' INCLUDE 'IM2_INT.asm'
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
POSTMSG: POSTMSG: CALL FindStringAddr
CALL FindStringAddr JP PRINTZ
JP PRINTZ
POSTMSC:
CALL FindStringAddr
LD A,E
JP CPRINTZ
;
; print boot drive number
PRINT_CHANEL:
AND #0F
LD C,A
;
LD A,msgStrings.parPriIdeMA
JR Z,.print_chanel
;
LD A,msgStrings.parPriIdeSl
DEC C
JR Z,.print_chanel
;
LD A,msgStrings.parSecIdeMA
DEC C
JR Z,.print_chanel
;
LD A,msgStrings.parSecIdeSl
.print_chanel:
CALL FindStringAddr
;CALL LP_GET_PLACE
;LD A,ScreenPOS.SUBNAME.POS
;SUB E
;LD B,A
LD B,0
LD D,#FF
JP LP_PRINT_LINE6
;
;----------------------------------------------------------------------[] ;----------------------------------------------------------------------[]
;!TODO ᤥ« âì ¢ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ ­âë: ;!TODO ᤥ« âì ¢ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ ­âë:
@ -1870,12 +1867,13 @@ STACK EQU #C000
INCLUDE 'src/bios/logo/Set_Pictures.asm' INCLUDE 'src/bios/logo/Set_Pictures.asm'
DISPLAY '-----[Set_Pictures Prebuild done ]-----' DISPLAY '-----[Set_Pictures Prebuild done ]-----'
ELSE ELSE
DISPLAY '------------------[Main.asm]------------------' MAIN_END_CODE_ADDRESS EQU $-1
DISPLAY 'End code address: ',/A,$-1 ; DISPLAY ' -------------------[Main.asm]-------------------'
DISPLAY 'Code size: ',/A,$-COMPILE_ADDR.MAIN ; DISPLAY 'End code address: ',/A,$-1
DISPLAY 'End buffers address: ',/A,memBUFFER.End-1 ; DISPLAY 'Code size: ',/A,$-COMPILE_ADDR.MAIN
DISPLAY 'Free memory: ',/A,#C000-(memBUFFER.End-1)-STACK.Size ; DISPLAY 'End buffers address: ',/A,memBUFFER.End-1
DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer ; DISPLAY 'Free memory: ',/A,#C000-(memBUFFER.End-1)-STACK.Size
; DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer
ENDIF ENDIF
; ;

View File

@ -25,7 +25,7 @@ BIOS_ver_hex EQU EXP_ID.VER*256+EXP_ID.MOD
;-[Version of disk subsystem "VER.MOD"]- ;-[Version of disk subsystem "VER.MOD"]-
ROM_ID: ROM_ID:
.VER EQU 2 ; <EFBFBD>®¬¥à ¢¥àᨨ ¬¥­ïâì âãâ! .VER EQU 2 ; <EFBFBD>®¬¥à ¢¥àᨨ ¬¥­ïâì âãâ!
.MOD EQU 55 ; <EFBFBD>®¬¥à ¢¥àᨨ ¬¥­ïâì âãâ! .MOD EQU 56 ; <EFBFBD>®¬¥à ¢¥àᨨ ¬¥­ïâì âãâ!
Disk_subsystem_ver_hex EQU ROM_ID.VER*256+ROM_ID.MOD Disk_subsystem_ver_hex EQU ROM_ID.VER*256+ROM_ID.MOD
DEFINE Disk_subsystem_ver_txt '0'+ROM_ID.VER, '.', '0'+ROM_ID.MOD/10, '0'+ROM_ID.MOD-(ROM_ID.MOD/10)*10 DEFINE Disk_subsystem_ver_txt '0'+ROM_ID.VER, '.', '0'+ROM_ID.MOD/10, '0'+ROM_ID.MOD-(ROM_ID.MOD/10)*10