CORE: переделка PutChar и PChars под функцию BIOS LP_PR_LINE_DIR

This commit is contained in:
Tolik 2025-04-02 01:14:36 +10:00
parent a64eeadd97
commit eae2582230
27 changed files with 671 additions and 509 deletions

View File

@ -96,7 +96,7 @@
; POP BC ; POP BC
; JP C,NDISK11 ; JP C,NDISK11
; LD A,B ; LD A,B
; LD (CORE_BUFFERS.FatBuffer.DRIVE),A ; LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
; CALL RD_BPB ; CALL RD_BPB
; RET C ; RET C
; LD A,(LDRIVE) ; LD A,(LDRIVE)

View File

@ -9,6 +9,12 @@
; B -  âਡãâ § ¯®«­¨â¥«ì ; B -  âਡãâ § ¯®«­¨â¥«ì
; ¢ë室: ­¥â ; ¢ë室: ­¥â
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
CLEAR: LD C,BIOS.LP_CLS_WIN2 CLEAR: LD C,A
LD A,B
LD (.shell_color),A
LD A,C
LD C,BIOS.LP_CLS_WIN2
JP ToBIOS JP ToBIOS
;
.shell_color: DB COLORS.CGA.INK.LGRAY
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////

View File

@ -363,11 +363,11 @@ _TST_PROC: CALL GETMEM
; ;
; ;
LD HL,(CMDLINE) LD HL,(CMDLINE)
LD DE,CORE_BUFFERS.SECTOR_BUFFER+1 LD DE,CORE_BUFFERS.BUFFER+1
CALL SCOPYS CALL SCOPYS
LD A,#80 ;!HARDCODE cmd line size LD A,#80 ;!HARDCODE cmd line size
SUB B SUB B
LD (CORE_BUFFERS.SECTOR_BUFFER),A LD (CORE_BUFFERS.BUFFER),A
; ;
LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER ;R02 LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER ;R02
; ! „ «¥¥ á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥! BIOS ¨ ­¥ DSS-MAIN ­¥ ¢ë§ë¢ âì ; ! „ «¥¥ á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥! BIOS ¨ ­¥ DSS-MAIN ­¥ ¢ë§ë¢ âì
@ -445,7 +445,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
EX DE,HL EX DE,HL
LD XH,D LD XH,D
LD XL,E LD XL,E
LD HL,CORE_BUFFERS.SECTOR_BUFFER LD HL,CORE_BUFFERS.BUFFER
LD C,(HL) LD C,(HL)
INC C INC C
LDIR LDIR

View File

@ -163,7 +163,7 @@ MKDIR:
EXX EXX
POP HL ; ¬« ¤è¨© ­®¬¥à ᥪâ®à  POP HL ; ¬« ¤è¨© ­®¬¥à ᥪâ®à 
CALL CLUSTER_TO_SECTOR CALL CLUSTER_TO_SECTOR
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster) ; ᥪâ®à®¢ ­  ª« áâ¥à LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster) ; ᥪâ®à®¢ ­  ª« áâ¥à
.MKD12: PUSH AF .MKD12: PUSH AF
PUSH HL ; áâ. à §àï¤ PUSH HL ; áâ. à §àï¤
PUSH IX ; ­®¬¥à «®£. ᥪâ®à  PUSH IX ; ­®¬¥à «®£. ᥪâ®à 
@ -173,7 +173,7 @@ MKDIR:
; IN A,(SLOT0) ; IN A,(SLOT0)
; OUT (SLOT3),A ; OUT (SLOT3),A
; ; ; ;
; LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
; LD DE,CORE_BUFFERS.SECTOR_BUFFER+#C000 ; LD DE,CORE_BUFFERS.SECTOR_BUFFER+#C000
; LD BC,1*256 + Dss.DRV.Write ; LD BC,1*256 + Dss.DRV.Write
; RST ToDSS.DRV ; RST ToDSS.DRV

View File

@ -68,7 +68,7 @@ OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
LD (IY+_sFM.F_POSITION+1),A LD (IY+_sFM.F_POSITION+1),A
LD (IY+_sFM.F_POSITION+2),A LD (IY+_sFM.F_POSITION+2),A
LD (IY+_sFM.F_POSITION+3),A LD (IY+_sFM.F_POSITION+3),A
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
LD (IY+_sFM.DRIVE),A LD (IY+_sFM.DRIVE),A
; fat32 ; fat32
LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_H LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_H

View File

@ -5,10 +5,26 @@
; ¢ë室: HL - 㪠§ â¥«ì ­  á«¥¤ãîéãî áâபã ᨬ¢®«®¢ ; ¢ë室: HL - 㪠§ â¥«ì ­  á«¥¤ãîéãî áâபã ᨬ¢®«®¢
; PRINT NULL-TERMINATED CHARS STRING ; PRINT NULL-TERMINATED CHARS STRING
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
PCHARS: LD A,(HL) ; PCHARS: LD A,(HL)
INC HL ; INC HL
OR A ; OR A
RET Z ; RET Z
CALL PUTCHAR ; CALL PUTCHAR
JP PCHARS ; JP PCHARS
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
PCHARS: XOR A ; no attr-mode
LD A,(CLEAR.shell_color)
LD B,A
EX AF,AF'
XOR A ; no XY-mode
LD C,BIOS.LP_PR_LINE_DIR
LD IY,0 ; YH = YL = B
JP ToBIOS
;///////////////////////////////////////////////////////////////////////
; A -  âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®«  ¥á«¨ CF'
; CF - XY-mode
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥, ¥á«¨ CF=1
; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
; B - 梥⠪®­á®«¨ (¨á¯®«ì§ã¥âáï ¯à¨ áªà®««¥ ¨ ®ç¨á⪥ ®ª­ )
; IY - ¤¢  ᯥæ.ᨬ¢®«  ¤«ï ¢ë室  á CF=1. „®«¦­ë ¡ëâì à ¢­ë B, ¥á«¨ ­¥ ­ã¦­ë
; CF' - ¢ë¢®¤¨âì ᨬ¢®« á  âਡãâ ¬¨

View File

@ -4,95 +4,124 @@
; ¢å®¤: A - ᨬ¢®« ; ¢å®¤: A - ᨬ¢®«
; ¢ë室: ­¥â ; ¢ë室: ­¥â
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
PUTCHAR: ;CALL .NO_SCROLL ; PUTCHAR: ;CALL .NO_SCROLL
CP #0E ; CP #0E
JR C,.control_characters ; JR C,.control_characters
; ; ;
LD BC,1*256 + BIOS.LP_PRINT_SYM ; LD BC,1*256 + BIOS.LP_PRINT_SYM
;[x] CR+LF+SCROLL ; ;[x] CR+LF+SCROLL
RST ToBIOS ; RST ToBIOS
; ; ;
; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à  ¢ á ¬®¥ ­ ç «® (X:Y == 0:0) ; ; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à  ¢ á ¬®¥ ­ ç «® (X:Y == 0:0)
CALL CURSOR ; CALL CURSOR
LD A,D ; LD A,D
OR E ; OR E
RET NZ ; RET NZ
; ; ;
.LFF: PUSH HL ; .LFF: PUSH HL
LD BC,1*256 + BIOS.LP_SCROLL_UD ; LD BC,1*256 + BIOS.LP_SCROLL_UD
LD DE,#0020 ; LD DE,#0020
RST ToBIOS ; RST ToBIOS
LD DE,#1F00 ; LD DE,#1F00
CALL LOCATE ; CALL LOCATE
LD A,' ' ; LD A,' '
LD BC,#50*256 + BIOS.LP_PRINT_SYM ; LD BC,#50*256 + BIOS.LP_PRINT_SYM
RST ToBIOS ; RST ToBIOS
LD DE,#1F00 ; LD DE,#1F00
CALL LOCATE ; CALL LOCATE
POP HL ; POP HL
RET ; RET
.TB_: CALL CURSOR ; .TB_: CALL CURSOR
IF TABisSPACES ; IF TABisSPACES
LD B,E ; LD B,E
LD A,E ; LD A,E
AND #F8 ; AND #F8
ADD A,8 ; ADD A,8
SUB B ; SUB B
LD B,A ; LD B,A
LD A,' ' ; LD A,' '
LD C,BIOS.LP_PRINT_SYM ; LD C,BIOS.LP_PRINT_SYM
JP ToBIOS ; JP ToBIOS
ELSE ; ELSE
LD A,E ; LD A,E
ADD A,8 ; ADD A,8
AND #78 ;????? £«ï­ãâì, çâ® ¡ã¤¥â ¥á«¨ ª®®à¤¨­ âë ªãàá®à  ¢ ª®­æ¥ áâப¨ ¯®ç⨠; AND #78 ;????? £«ï­ãâì, çâ® ¡ã¤¥â ¥á«¨ ª®®à¤¨­ âë ªãàá®à  ¢ ª®­æ¥ áâப¨ ¯®çâ¨
LD E,A ; LD E,A
JP LOCATE ; JP LOCATE
ENDIF ; ENDIF
.BK_: CALL CURSOR ; .BK_: CALL CURSOR
XOR A ; XOR A
CP E ; CP E
RET Z ; RET Z
DEC E ; DEC E
JP LOCATE ; JP LOCATE
; ; ;
.LF_: CALL CURSOR ; .LF_: CALL CURSOR
LD A,D ; LD A,D
CP #1F ; CP #1F
JR NC,.LFF ; JR NC,.LFF
INC D ; INC D
IFN EnoughtOnly_LF ; IFN EnoughtOnly_LF
JP LOCATE ; JP LOCATE
ELSE ; ELSE
CALL LOCATE ; CALL LOCATE
; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!! ; ; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!!
ENDIF ; ENDIF
.CR_: CALL CURSOR ; .CR_: CALL CURSOR
LD E,0 ; LD E,0
JP LOCATE ; JP LOCATE
; ; ;
.control_characters: ; .control_characters:
CP "\r" ; CP "\r"
JR Z,.CR_ ; JR Z,.CR_
CP "\n" ; CP "\n"
JR Z,.LF_ ; JR Z,.LF_
CP "\t" ; tab ; CP "\t" ; tab
JR Z,.TB_ ; JR Z,.TB_
CP "\b" ; backspace ; CP "\b" ; backspace
JR Z,.BK_ ; JR Z,.BK_
CP "\a" ; [x] Beep in PChars/PUTCHAR ; CP "\a" ; [x] Beep in PChars/PUTCHAR
RET NZ ; RET NZ
; [x] Beep in PChars/PUTCHAR ; ; [x] Beep in PChars/PUTCHAR
.BELL: LD DE,1200 ; .BELL: LD DE,1200
PUSH HL ; PUSH HL
LD HL,4 ; LD HL,4
CALL BEEP ; CALL BEEP
POP HL ; POP HL
RET ; RET
; ; ;
; [x] -bug with Vasil's version of cursor ; ; [x] -bug with Vasil's version of cursor
.NO_SCROLL: CP #0E ; .NO_SCROLL: CP #0E
JR C,.control_characters ; JR C,.control_characters
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM ; LD BC,1*256 + BIOS.LP_PRINT_SYM
JP ToBIOS ; JP ToBIOS
;///////////////////////////////////////////////////////////////////////
;///////////////////////////////////////////////////////////////////////
PUTCHAR: PUSH HL
;
LD L,A
XOR A ; no attr-mode
LD H,A
PUSH HL ; ª« ¤ñ¬ ­  á⥪ ¯¥ç â ¥¬ë© ᨬ¢®«
LD L,A
ADD HL,SP
;
LD A,(CLEAR.shell_color)
LD B,A
EX AF,AF'
XOR A ; no XY-mode
LD C,BIOS.LP_PR_LINE_DIR
LD IY,0 ; YH = YL = B
RST ToBIOS
POP HL ; ¢®ááâ ­ ¢«¨¢ ¥¬ á⥪
;
POP HL
RET
; .NO_SCROLL:
; .CHAR: DZ "X"
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////

View File

@ -55,7 +55,7 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL PUSH HL
EXX EXX
CALL CLUSTER_TO_SECTOR CALL CLUSTER_TO_SECTOR
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster) LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
LD B,A LD B,A
; ­ ç¨­ ¥¬ ¢ëç¨â뢠âì ᮤ¥à¦¨¬®¥ ª â «®£  ¯®á¥ªâ®à­® ; ­ ç¨­ ¥¬ ¢ëç¨â뢠âì ᮤ¥à¦¨¬®¥ ª â «®£  ¯®á¥ªâ®à­®
.read_dir_loop: ;PUSH AF .read_dir_loop: ;PUSH AF
@ -70,7 +70,7 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
; ; ; ;
; LD DE,CORE_BUFFERS.SECTOR_BUFFER+#C000 ; LD DE,CORE_BUFFERS.SECTOR_BUFFER+#C000
; LD BC,1*256 + Dss.DRV.Read ; LD BC,1*256 + Dss.DRV.Read
; LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
; RST ToDSS.DRV ; RST ToDSS.DRV
; POP AF ; POP AF
; OUT (SLOT3),A ; OUT (SLOT3),A

View File

@ -9,15 +9,17 @@
; ¢ë室: ­¥â ; ¢ë室: ­¥â
;!FIXIT slow ª ª ¡¥§ WIN_GET_SYM âãâ ®¡®©â¨áì? ;!FIXIT slow ª ª ¡¥§ WIN_GET_SYM âãâ ®¡®©â¨áì?
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
WRCHAR: LD C,A WRCHAR: ;LD C,A
PUSH BC ;PUSH BC
PUSH DE ;PUSH DE
;XOR A
;LD C,BIOS.WIN_GET_SYM
;RST ToBIOS
;POP DE
;POP HL
LD L,A
LD H,B
XOR A XOR A
LD C,BIOS.WIN_GET_SYM LD BC,BIOS.WIN_PUT_SYM.NoChangeZG
RST ToBIOS
POP DE
POP HL
XOR A
LD C,BIOS.WIN_PUT_SYM
JP ToBIOS JP ToBIOS
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////

View File

@ -18,7 +18,7 @@ WRITE.RD_ONLY:
WRITE: ;!TEST ;!TODO 5/12/23 ; [ ] ¨§ĄëâŽç­ëĽ ˘ë§Ž˘ë WRITE_FAT_TABLE WRITE: ;!TEST ;!TODO 5/12/23 ; [ ] ¨§ĄëâŽç­ëĽ ˘ë§Ž˘ë WRITE_FAT_TABLE
CALL .Start CALL .Start
PUSH AF PUSH AF
LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated) LD A,(CORE_BUFFERS.FS_Buffer.CacheUpdated)
OR A OR A
CALL NZ,WRITE_FAT_TABLE ; ŻŽ¤ŞŤ. Ą ­Şă ŞĽč  FAT ¨ § Ż¨á âě ĽŁŽ ­  ¤¨áŞ CALL NZ,WRITE_FAT_TABLE ; ŻŽ¤ŞŤ. Ą ­Şă ŞĽč  FAT ¨ § Ż¨á âě ĽŁŽ ­  ¤¨áŞ
POP AF POP AF

View File

@ -16,7 +16,7 @@ CURDISK_FN:
CURDISK: CURDISK:
LD A,(LDRIVE) LD A,(LDRIVE)
LD C,A LD C,A
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
AND A AND A
RET RET
; ;

View File

@ -63,7 +63,7 @@ DISKINF: LD C,B
LD C,5 ;!HARDCODE _sBOOT_SECTOR_PARAMS.ID_FAT.length LD C,5 ;!HARDCODE _sBOOT_SECTOR_PARAMS.ID_FAT.length
CALL .mCOPY_LOOP CALL .mCOPY_LOOP
; 12, 16 or 32 ; 12, 16 or 32
LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE) LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
CP FAT_TYPE.x16 CP FAT_TYPE.x16
JR C,.next_prm JR C,.next_prm
; ;
@ -77,7 +77,7 @@ DISKINF: LD C,B
.put_char: LD (DE),A .put_char: LD (DE),A
POP DE POP DE
; ;
.next_prm: LD HL,CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER .next_prm: LD HL,CORE_BUFFERS.FS_Buffer.BPB_SERIAL_NUMBER
LD C,4 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_SERIAL_NUMBER LD C,4 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_SERIAL_NUMBER
CALL .mCOPY_LOOP CALL .mCOPY_LOOP
; ;
@ -86,7 +86,7 @@ DISKINF: LD C,B
PUSH DE PUSH DE
PUSH HL PUSH HL
EXX EXX
;LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL ;LD HL,CORE_BUFFERS.FS_Buffer.BPB_LABEL
PUSH IX PUSH IX
CALL GET_LABEL CALL GET_LABEL
LD C,11 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_LABEL LD C,11 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_LABEL
@ -132,7 +132,7 @@ DISKINF: LD C,B
;JR Z,CURRDS ;R06 ;JR Z,CURRDS ;R06
.CurrentDisk: LD A,(CORE_BUFFERS.CurrentPath) .CurrentDisk: LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
LD HL,CORE_BUFFERS.FatBuffer.DRIVE LD HL,CORE_BUFFERS.FS_Buffer.DRIVE
CP (HL) CP (HL)
JR Z,.CheckFreeSpace JR Z,.CheckFreeSpace
; ;
@ -144,9 +144,9 @@ DISKINF: LD C,B
.CheckFreeSpace:; ¥á«¨ GetFreeSpace ­¥ ¢ë§ë¢ ¥âáï .CheckFreeSpace:; ¥á«¨ GetFreeSpace ­¥ ¢ë§ë¢ ¥âáï
XOR A XOR A
OR B OR B
LD BC,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L) LD BC,(CORE_BUFFERS.FS_Buffer.FREE_CLUSTERS_COUNT_L)
EXX EXX
LD BC,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H) LD BC,(CORE_BUFFERS.FS_Buffer.FREE_CLUSTERS_COUNT_H)
EXX EXX
CALL NZ,GetFreeSpace CALL NZ,GetFreeSpace
; ;
@ -155,24 +155,24 @@ DISKINF: LD C,B
; ;
LD H,B LD H,B
LD L,C LD L,C
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),HL LD (CORE_BUFFERS.FS_Buffer.FREE_CLUSTERS_COUNT_L),HL
EX DE,HL EX DE,HL
EXX EXX
LD H,B LD H,B
LD L,C LD L,C
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H),HL LD (CORE_BUFFERS.FS_Buffer.FREE_CLUSTERS_COUNT_H),HL
EX DE,HL EX DE,HL
EXX EXX
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow) LD HL,(CORE_BUFFERS.FS_Buffer.MaxClusterLow)
DEC HL DEC HL
; fat 32 ; fat 32
EXX EXX
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh) LD HL,(CORE_BUFFERS.FS_Buffer.MaxClusterHigh)
JR NC,.skip_dec_hl JR NC,.skip_dec_hl
DEC HL DEC HL
.skip_dec_hl: EXX .skip_dec_hl: EXX
LD BC,(CORE_BUFFERS.FatBuffer.BytesPerSector) LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster) LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
AND A AND A
RET RET
; ;
@ -187,7 +187,7 @@ DISKINF: LD C,B
; ;
; ;
GetFreeSpace: LD A,1 GetFreeSpace: LD A,1
LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A LD (CORE_BUFFERS.FS_Buffer.UPD_FSINFO),A
LD HL,2 ; fat32 ­®¬¥à ª« áâ¥à  ®â ª®â®à®£® áç¨â âì LD HL,2 ; fat32 ­®¬¥à ª« áâ¥à  ®â ª®â®à®£® áç¨â âì
XOR A XOR A
; fat32 ; fat32
@ -246,7 +246,7 @@ GET_LABEL: PUSH DE
LD B,high Dss.F_First.FATname LD B,high Dss.F_First.FATname
CALL F_FIRST CALL F_FIRST
POP DE POP DE
LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL LD HL,CORE_BUFFERS.FS_Buffer.BPB_LABEL
RET C RET C
; [ ] 07/03/2025 ª®áâë«ì ¤«ï  âਡãâ  0. <20> áâ®ï« ‘ ¢¥«¨©)) ; [ ] 07/03/2025 ª®áâë«ì ¤«ï  âਡãâ  0. <20> áâ®ï« ‘ ¢¥«¨©))
LD HL,BUFFER_FIND.REC_Attr LD HL,BUFFER_FIND.REC_Attr

View File

@ -184,7 +184,7 @@ TMPNAME: DZ ' ' ; 12
; IN: A - drive number ; IN: A - drive number
OPENDSK: ;!TEST DRV.Open ŽĄĺŽ¤ R10 OPENDSK: ;!TEST DRV.Open ŽĄĺŽ¤ R10
LD C,A LD C,A
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
CP C CP C
JR NZ,.open JR NZ,.open
PUSH BC PUSH BC
@ -202,12 +202,12 @@ OPENDSK: ;!TEST DRV.Open
POP BC POP BC
JP C,.error JP C,.error
;[x] 29/02/2024 fix "open drive error" ;[x] 29/02/2024 fix "open drive error"
.skip_open: LD A,(CORE_BUFFERS.FatBuffer.DRIVE) .skip_open: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
LD D,A LD D,A
PUSH DE PUSH DE
; ;
LD A,B LD A,B
LD (CORE_BUFFERS.FatBuffer.DRIVE),A LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
; ;
CALL RD_BPB CALL RD_BPB
;[x] 29/02/2024 fix "open drive error" ;[x] 29/02/2024 fix "open drive error"
@ -236,7 +236,7 @@ OPENDSK: ;!TEST DRV.Open
; ;
;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed ;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed
.error_bpb: PUSH AF ; áŽĺ࠭/ ­ŽŹĽŕ Žč¨ĄŞ¨ .error_bpb: PUSH AF ; áŽĺ࠭/ ­ŽŹĽŕ Žč¨ĄŞ¨
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
CP D CP D
JR Z,.next_check JR Z,.next_check
; ;
@ -245,15 +245,15 @@ OPENDSK: ;!TEST DRV.Open
SCF SCF
JR Z,.set_panic JR Z,.set_panic
; ;
LD (CORE_BUFFERS.FatBuffer.DRIVE),A LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
CALL OPENDSK.force CALL OPENDSK.force
JR NC,.err_exit JR NC,.err_exit
; ;
LD A,(BOOTDSK.NUM) LD A,(BOOTDSK.NUM)
LD (CORE_BUFFERS.FatBuffer.DRIVE),A LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
CALL OPENDSK.force CALL OPENDSK.force
; ;
.err_exit: LD A,(CORE_BUFFERS.FatBuffer.DRIVE) .err_exit: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A' ADD 'A'
LD (CORE_BUFFERS.CurrentPath),A LD (CORE_BUFFERS.CurrentPath),A
POP AF POP AF
@ -384,7 +384,7 @@ MASK: LD HL,TMPNAME
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;!TEST Current Dir ;[x] 15/10/23 ;!TEST Current Dir ;[x] 15/10/23
DIR_PATH_CHANGE: DIR_PATH_CHANGE:
.FullCurrent: LD A,(CORE_BUFFERS.FatBuffer.DRIVE) .FullCurrent: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A' ADD 'A'
LD (CORE_BUFFERS.CurrentPath),A LD (CORE_BUFFERS.CurrentPath),A
; ;
@ -393,7 +393,7 @@ DIR_PATH_CHANGE:
; ;
.FullWork: LD A,(CORE_BUFFERS.CurrentPath) .FullWork: LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
LD (CORE_BUFFERS.FatBuffer.DRIVE),A LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
; ;
.Work: LD HL,CORE_BUFFERS.WorkDirectory .Work: LD HL,CORE_BUFFERS.WorkDirectory
JP CURRDIR_FN JP CURRDIR_FN
@ -419,7 +419,7 @@ DIR_PATH_CHECK: LD A,(HL)
JR Z,.checkDir JR Z,.checkDir
; ;
LD HL,CORE_BUFFERS.CurrentPath LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A' ADD 'A'
CP (HL) CP (HL)
JR NZ,.gotoPath JR NZ,.gotoPath
@ -459,7 +459,7 @@ DIR_PATH_CHECK: LD A,(HL)
JR .gotoPath JR .gotoPath
; ;
.checkDrive: LD HL,CORE_BUFFERS.CurrentPath .checkDrive: LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A' ADD 'A'
CP (HL) CP (HL)
RET RET
@ -588,3 +588,22 @@ MOVE_CP:
RET RET
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; [x] fat32 ; [ ] CDFS
; !TODO ¯¥à¥­¥á⨠¯®â®¬ ¢ FS module
RD_BPB: CALL READ_BPB
RET C
;
LD DE,#AA55 ; ᨣ­ âãà  ;R05
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.MBR_SIGNATURE) ;R08 ;R07
;
AND A
SBC HL,DE
JP Z,FAT_BPB
;
; CDFS check
;
;
.UnknownBPB: LD A,DSS_Error.sys.UNKNOWN_FORMAT
SCF
RET
;----------------------------------------------------------------------;

View File

@ -72,7 +72,7 @@ RST_0x00: JP RETFAR ; ;EXECUTE.ASM R12
; <[BIOS API]> ; ; <[BIOS API]> ;
_mInfoBLOCK 8-$,#FF ; _mInfoBLOCK 8-$,#FF ;
RST_0x08: PUSH AF ; RST_0x08: PUSH AF ;
LD A,SYS_PORT.PAGE8; LD A,SYS_PORT.BIOS ;
OUT (SYS_PORT.ON),A ; OUT (SYS_PORT.ON),A ;
POP AF ; POP AF ;
RET ; RET ;
@ -190,14 +190,14 @@ RST_10: PUSH HL
IF SHORT_RSTx10_TABLE IF SHORT_RSTx10_TABLE
;[ ] R09 ;[ ] R09
LD H,A LD H,A
LD A,#5F LD A,+(DSS_API_TABLE.low_short)
SUB C SUB C
JR C,.error JR C,.error
LD A,H LD A,H
;[ ] R09 ;[ ] R09
ENDIF ENDIF
LD H,high ADRST10 LD H,high DSS_API_TABLE
LD C,(HL) LD C,(HL)
INC H INC H
LD H,(HL) LD H,(HL)
@ -254,7 +254,7 @@ CLEAR_BUFFER_AND_INIT_PROC:
LD (CORE_BUFFERS.WorkDirectory),A LD (CORE_BUFFERS.WorkDirectory),A
; ;
LD A,#FF LD A,#FF
LD (CORE_BUFFERS.FatBuffer.DRIVE),A LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
; ;
;R07 ;R11 ;R07 ;R11
;R11 ;R11
@ -265,9 +265,9 @@ CLEAR_BUFFER_AND_INIT_PROC:
;R02 ;R02
;LD B,#FF ;INIT ENVIRONMENT ;LD B,#FF ;INIT ENVIRONMENT
CALL INITENV CALL INITENV
IFN CLASSIC_CURSOR ; IFN CLASSIC_CURSOR
CALL SETUP_CURSORS CALL SETUP_CURSORS
ENDIF ; ENDIF
;R02 ;R02
JP VERSION JP VERSION
@ -289,9 +289,9 @@ INTx38_Handler: PUSH AF
LD C,Dss.Mouse.GetPackets LD C,Dss.Mouse.GetPackets
RST ToDSS.Mouse RST ToDSS.Mouse
;CALL M_INT ;CALL M_INT
IFN CLASSIC_CURSOR ; IFN CLASSIC_CURSOR
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à  ;!!!!! VASIL CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à  ;!!!!! VASIL
ENDIF ; ENDIF
POP IY POP IY
POP IX POP IX
POP HL POP HL
@ -335,7 +335,7 @@ INTx38_Handler: PUSH AF
;------------------------------------------------------------------------------------------------------------------------; ;------------------------------------------------------------------------------------------------------------------------;
GO_ZERO EQU #0000 GO_ZERO EQU #0000
;FUNCTION ADDRESS ARRAY ;FUNCTION ADDRESS ARRAY
ADRST10: ;DS 512 ;,0 DSS_API_TABLE: ;DS 512 ;,0
;...............................................[LOW ADDRESS ]: ;...............................................[LOW ADDRESS ]:
; 0 1 2 3 4 5 6 7 8 9 DEC HEX ; 0 1 2 3 4 5 6 7 8 9 DEC HEX
DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09 DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
@ -349,8 +349,10 @@ ADRST10: ;DS 512 ;,0
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59 DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F
IFN SHORT_RSTx10_TABLE
;[ ] R09 ;[ ] R09
.low_short EQU $ - DSS_API_TABLE
IFN SHORT_RSTx10_TABLE
;
DB low NOPS, low NOPS, low NOPS, low NOPS ; 9 60..63 DB low NOPS, low NOPS, low NOPS, low NOPS ; 9 60..63
DB low NOPS, low NOPS, low NOPS, low NOPS, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 10 64..6D DB low NOPS, low NOPS, low NOPS, low NOPS, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 10 64..6D
DUP 13 DUP 13
@ -358,10 +360,10 @@ ADRST10: ;DS 512 ;,0
EDUP EDUP
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 24 F0..F9 DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 24 F0..F9
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; END ; 25 FA..FF DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; END ; 25 FA..FF
;
ELSE ;!TODO free space ELSE ;!TODO free space
_mInfoBLOCK ADRST10+#100 - $,0 _mInfoBLOCK DSS_API_TABLE+#100 - $,0
;[ ] R09 ;[ ] R09
ENDIF ENDIF
;...............................................[HIGH ADDRESS]: ;...............................................[HIGH ADDRESS]:
@ -376,8 +378,10 @@ ADRST10: ;DS 512 ;,0
DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY
DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT
IFN SHORT_RSTx10_TABLE
;[ ] R09 ;[ ] R09
.high_short EQU $ - DSS_API_TABLE - .low_short
IFN SHORT_RSTx10_TABLE
;
DB high NOPS, high NOPS, high NOPS, high NOPS DB high NOPS, high NOPS, high NOPS, high NOPS
DB high NOPS, high NOPS, high NOPS, high NOPS, high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high NOPS, high NOPS, high NOPS, high NOPS, high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO
DUP 13 DUP 13
@ -385,10 +389,10 @@ ADRST10: ;DS 512 ;,0
EDUP EDUP
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS ; END DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS ; END
;
ELSE ELSE
;!TODO free space ;!TODO free space
;_mInfoBLOCK ADRST10+#200 - $,0 ;_mInfoBLOCK DSS_API_TABLE+#200 - $,0
;[ ] R09 ;[ ] R09
ENDIF ENDIF
; DB low WINREST, low PUTCHAR, low PCHARS, low NOPS, low NOPS, low PRINT, low NOPS, low NOPS, low NOPS, low NOPS ; 9 5A..63 ; DB low WINREST, low PUTCHAR, low PCHARS, low NOPS, low NOPS, low PRINT, low NOPS, low NOPS, low NOPS, low NOPS ; 9 5A..63
@ -405,7 +409,7 @@ ADRST10: ;DS 512 ;,0
; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb ; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb
CHECK_64kb_CLUSTER: CHECK_64kb_CLUSTER:
LD HL,(CORE_BUFFERS.FatBuffer.BytesPerCluster) LD HL,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
; CF=0 ; CF=0
ADC HL,HL ADC HL,HL
LD A,DSS_Error.sys.WRITE_PROTECT LD A,DSS_Error.sys.WRITE_PROTECT
@ -458,7 +462,7 @@ BUFFERSplace _sBuffers=$
FM_BUF _sFM = BUFFERSplace.FileManipulator FM_BUF _sFM = BUFFERSplace.FileManipulator
.Size EQU _sFM .Size EQU _sFM
.FullSize EQU FMCOUNT*FM_BUF.Size .FullSize EQU FMCOUNT*FM_BUF.Size
FatBuffer _sFatBuffer = BUFFERSplace.FatBuffer FS_Buffer _sFS_Buffer = BUFFERSplace.FS_Buffer
EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header
XSTACK _sStack = BUFFERSplace.Stack XSTACK _sStack = BUFFERSplace.Stack
.Spoint EQU XSTACK + _sStack .Spoint EQU XSTACK + _sStack
@ -492,8 +496,8 @@ CLEAR_ZONE.size EQU _sBuffers
DISPLAY " FM_BUF ", /H, CORE_BUFFERS.FM_BUF DISPLAY " FM_BUF ", /H, CORE_BUFFERS.FM_BUF
DISPLAY " FM_BUF.Size: ", /H, CORE_BUFFERS.FM_BUF.Size DISPLAY " FM_BUF.Size: ", /H, CORE_BUFFERS.FM_BUF.Size
DISPLAY " FM_BUF.FullSize ", /H, CORE_BUFFERS.FM_BUF.FullSize DISPLAY " FM_BUF.FullSize ", /H, CORE_BUFFERS.FM_BUF.FullSize
DISPLAY " FatBuffer ", /H, CORE_BUFFERS.FatBuffer DISPLAY " FS_Buffer ", /H, CORE_BUFFERS.FS_Buffer
DISPLAY " FatBuffer.Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.FatBuffer DISPLAY " FS_Buffer.Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.FS_Buffer
DISPLAY " EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF DISPLAY " EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
DISPLAY " Size ", /H, CORE_BUFFERS.XSTACK - CORE_BUFFERS.EXEBUFF DISPLAY " Size ", /H, CORE_BUFFERS.XSTACK - CORE_BUFFERS.EXEBUFF
DISPLAY " XSTACK ", /H, CORE_BUFFERS.XSTACK DISPLAY " XSTACK ", /H, CORE_BUFFERS.XSTACK
@ -508,7 +512,7 @@ CLEAR_ZONE.size EQU _sBuffers
EXPORT CORE_BUFFERS.BUFFERSplace EXPORT CORE_BUFFERS.BUFFERSplace
EXPORT CORE_BUFFERS.FM_BUF EXPORT CORE_BUFFERS.FM_BUF
EXPORT CORE_BUFFERS.FatBuffer EXPORT CORE_BUFFERS.FS_Buffer
EXPORT CORE_BUFFERS.EXEBUFF EXPORT CORE_BUFFERS.EXEBUFF
EXPORT CORE_BUFFERS.XSTACK EXPORT CORE_BUFFERS.XSTACK
EXPORT CORE_BUFFERS.BUFFER EXPORT CORE_BUFFERS.BUFFER
@ -567,18 +571,19 @@ F_START: DI
; ;
;R12 ;R12
LD C,BIOS.DRV_VERSION LD HL,0 ; ¯¨á âì ¢ ­¨ªã¤ 
LD C,BIOS.FN_VERSION
RST ToBIOS RST ToBIOS
JR C,.err_oldBIOS JR C,.err_oldBIOS
EX DE,HL EX DE,HL
LD DE,MINIMUM_BIOS_VERSION LD DE,MINIMUM_BIOS_VERSION
SBC HL,DE SBC HL,DE
JR NC,.good JR C,.err_oldBIOS
LD A,(.saveDRV+1) ; LD A,(.saveDRV+1)
CP 2 ;¯à®¢¥àª  ­  § £à㧪ã á ¤¨áª¥âë, ¥á«¨ á ¤¨áª¥âë, â® ¬®¦­® ¯à®¨£­®à¨âì § ¯ã᪠­  BIOS ­¨¦¥ 2.55 ; CP 2 ;¯à®¢¥àª  ­  § £à㧪ã á ¤¨áª¥âë, ¥á«¨ á ¤¨áª¥âë, â® ¬®¦­® ¯à®¨£­®à¨âì § ¯ã᪠­  BIOS ­¨¦¥ 2.55
JR NC,.err_oldBIOS ; JR NC,.err_oldBIOS
LD HL,#C9AF ; XOR A : RET opcodes ; LD HL,#C9AF ; XOR A : RET opcodes
LD (DRV_CONTENT + INITDVC.if_old),HL ;!!!!!! ; LD (DRV_CONTENT + INITDVC.if_old),HL
; ;
.good: CALL DEPLOY ;R07 ;íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï .good: CALL DEPLOY ;R07 ;íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï
@ -608,7 +613,7 @@ F_START: DI
; ;
EI EI
;Set new address fn. VERSION ;Set new address fn. VERSION
LD HL,ADRST10 LD HL,DSS_API_TABLE
LD (HL),low VERSION ;R03 LD (HL),low VERSION ;R03
INC H INC H
LD (HL),high VERSION ;R03 LD (HL),high VERSION ;R03
@ -616,14 +621,18 @@ F_START: DI
; ;
;R12 ;R12
.err_oldBIOS: .err_oldBIOS:
LD HL,.err_oldBIOS_message IN A,(SLOT0)
OUT (SLOT3),A
LD HL,.err_oldBIOS_message + SLOT3.MEM_ADDR
;LD C,Dss.PChars ;LD C,Dss.PChars
;RST ToDSS ;RST ToDSS
CALL PCHARS CALL PCHARS
SCF SCF
RET RET
.err_oldBIOS_message: .err_oldBIOS_message:
DZ "\r\nWARNING! This version of DSS requires BIOS v2.55 or later to boot from IDE." DB "\r\nWARNING! This version of DSS requires BIOS v"
DB STR_MINIMUM_BIOS_VERSION
DZ " or later to boot from IDE."
; ;
DEPLOY: ;Allocate memory DEPLOY: ;Allocate memory
@ -678,6 +687,7 @@ DEPLOY: ;Allocate memory
; C_OSTYPE ; C_OSTYPE
;--- --- --- --- --- --- --- --- --- --- --- ---; ;--- --- --- --- --- --- --- --- --- --- --- ---;
DISPLAY "FAT MODULE SIZE: ",/A,FAT_MODULE_SIZE
DISPLAY "DEPLOY end address: ",/H,$ DISPLAY "DEPLOY end address: ",/H,$
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||; ;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes." DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes."
@ -689,7 +699,6 @@ DRV_CONTENT.SIZE EQU $-DRV_CONTENT
BIN_END_ADDRESS EQU $ BIN_END_ADDRESS EQU $
DISPLAY "END ADDRESS: ",/H,BIN_END_ADDRESS DISPLAY "END ADDRESS: ",/H,BIN_END_ADDRESS
DISPLAY "Memory leacks when > ",/H, #4000+SUBLOAD_SIZE*512 DISPLAY "Memory leacks when > ",/H, #4000+SUBLOAD_SIZE*512
ASSERT $ < (#4001+SUBLOAD_SIZE*512),'-> Memory leack!!!'; ASSERT $ < (#4001+SUBLOAD_SIZE*512),'-> Memory leack!!!';

View File

@ -1,4 +1,4 @@
; INITDISK - ¨­¨æ¨ «¨§ æ¨ï ¡ãª¢ë ¤¨áª  ; INITDISK - ¨­¨æ¨ «¨§ æ¨ï ¡ãª¢ë ¤¨áª  - ¯¥à¥­¥á⨠ªã᮪ ¢ RD_BPB
; LOADDIR - § £à㧪  á CDFS ¤¨à¥ªâ®à¨¨ ¨  ¤ ¯â æ¨ï ¯®¤ FAT ; LOADDIR - § £à㧪  á CDFS ¤¨à¥ªâ®à¨¨ ¨  ¤ ¯â æ¨ï ¯®¤ FAT
; ;
/* /*
@ -6,7 +6,8 @@
CHECK_ROOT_CLUSTER CHECK_ROOT_CLUSTER
NEW RST: -= RST ToDSS.FS =-
RD_BPB - shared_fs.asm - ¡à âì ᨣ­ âãàã #AA55 ¨«¨ ¨§ CDFS.RD_BPB ¨ ¤ «¥¥ 㦥 RST_FS
LOADDIR LOADDIR
*/ */

File diff suppressed because it is too large Load Diff

View File

@ -129,60 +129,60 @@ SCANKEY LD HL,HOST
; ;
; ;
IF CLASSIC_CURSOR ;------------------------------; ; IF CLASSIC_CURSOR ;------------------------------;
ECHOKEY: ;R01 ; ECHOKEY: ;R01
.CURCOUNT+1: LD A,#FF ; .CURCOUNT+1: LD A,#FF
INC A ; INC A
LD (.CURCOUNT),A ; LD (.CURCOUNT),A
AND #FF ; AND #FF
JR NZ,.NOTUR ; JR NZ,.NOTUR
.CURSYM+1: LD A,#00 ; .CURSYM+1: LD A,#00
XOR #01 ; XOR #01
LD (.CURSYM),A ; LD (.CURSYM),A
CALL CURSOR ; CALL CURSOR
PUSH DE ; PUSH DE
LD A," " ; LD A," "
JR Z,.CURSKI ; JR Z,.CURSKI
LD A,"_" ; LD A,"_"
.CURSKI: CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor ; .CURSKI: CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
POP DE ; POP DE
CALL LOCATE ; CALL LOCATE
;LD A,8 ; BACKSPACE ; ;LD A,8 ; BACKSPACE
;CALL PUTCHAR ; ;CALL PUTCHAR
.NOTUR: CALL SCANKEY ; .NOTUR: CALL SCANKEY
JR Z,ECHOKEY ; JR Z,ECHOKEY
PUSH DE ; PUSH DE
PUSH BC ; PUSH BC
PUSH AF ; PUSH AF
CALL CURSOR ; CALL CURSOR
PUSH DE ; PUSH DE
LD A," " ; LD A," "
CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor ; CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
;LD A,8 ; BACKSPACE ; ;LD A,8 ; BACKSPACE
;CALL PUTCHAR ; ;CALL PUTCHAR
POP DE ; POP DE
POP AF ; POP AF
PUSH DE ; PUSH DE
;R01 [v] ; ;R01 [v]
CALL PUTCHAR.NO_SCROLL ; [x] -bug with Vasil's version of cursor ; CALL PUTCHAR.NO_SCROLL ; [x] -bug with Vasil's version of cursor
POP DE ; POP DE
CALL LOCATE ; CALL LOCATE
POP BC ; POP BC
POP DE ; POP DE
LD A,E ; LD A,E
AND A ; AND A
RET ; RET
ELSE ;------------------------------; ; ELSE ;------------------------------;
;------; !FIXIT ¡à âì §­ ç¥­¨ï ¤«ï §­ ª®£¥­¥à â®à  ¨§ ¡¨®á ? ;------; !FIXIT ¡à âì §­ ç¥­¨ï ¤«ï §­ ª®£¥­¥à â®à  ¨§ ¡¨®á ?
@ -203,7 +203,7 @@ ECHOKEY: CALL Cursor_On ;
POP AF POP AF
OR A OR A
; [x] -bug with Vasil's version of cursor ; [x] -bug with Vasil's version of cursor
CALL NZ,PUTCHAR.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" ­  íªà ­ CALL NZ,PUTCHAR;.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" ­  íªà ­
POP BC POP BC
POP DE POP DE
LD A,E LD A,E
@ -295,45 +295,86 @@ cursor_interrupt:
; <20> áâனª  §­ ª®£¥­¥à â®à  ªãàá®à  ç¥àâ®çª®© ; <20> áâனª  §­ ª®£¥­¥à â®à  ªãàá®à  ç¥àâ®çª®©
SETUP_CURSORS: SETUP_CURSORS:
.buffer EQU #C000 .buffer EQU #C000
.buffer.size EQU 2048
; ;
in a,(SLOT3) in a,(SLOT3)
push af ; á®åà. ¯®àâ push af ; á®åà. ¯®àâ
ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘ ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘
out (SLOT3),a out (SLOT3),a
; ; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
; ld de,.buffer ;!HARDCODE ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå
; push de
; ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­.
; rst ToBIOS
; ; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨
; ld hl,.buffer+(2048-(2*256)) ;!HARDCODE ¯®á«¥¤­¨¥ 512 ¡ ©â
; ld bc,511
; ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª "
; call .fill_data_font
; pop hl
; ; § ¯®«­¨âì ®áâ «ì­ë¥ 6 «¨­¨© (¯®«­ë© ¡«®ª)
; ld bc,2048-513 ;!HARDCODE
; ld a,INS_CUR_ZG ; ­®¬¥à §­ ª®£¥­. "¡«®ª"
; call .fill_data_font
; pop af
; out (SLOT3),a ; ¢®ááâ. ¯®àâ
; ret
; ; <20> áâனª  §­ ª®£¥­. ¨ ¥£® ॣ¨áâà æ¨ï
; ; ¢å®¤: a=­®¬¥à §­ ª®£¥­.
; ; hl=¤ ­­ë¥
; ; bc=à §¬¥à ¤ ­­ëå
; .fill_data_font:
; ld e,l
; ld d,h
; ld (hl),#FF
; inc de
; ldir
; .set: ld de,.buffer ; §­ ª®£¥­.
; ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­.
; jp ToBIOS
;
; [ ] 31/03/2025
; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­. ; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
ld de,.buffer ;!HARDCODE ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå call .get_font
push de
ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­.
rst ToBIOS
; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨ ; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨
ld hl,.buffer+(2048-(2*256)) ;!HARDCODE ¯®á«¥¤­¨¥ 512 ¡ ©â ld hl,.buffer+(.buffer.size - (2*256)) ; ¯®á«¥¤­¨¥ 512 ¡ ©â
ld bc,511
ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª "
call .fill_data_font
pop hl
; § ¯®«­¨âì ®áâ «ì­ë¥ 6 «¨­¨© (¯®«­ë© ¡«®ª)
ld bc,2048-513 ;!HARDCODE
ld a,INS_CUR_ZG ; ­®¬¥à §­ ª®£¥­. "¡«®ª"
call .fill_data_font
pop af
out (SLOT3),a ; ¢®ááâ. ¯®àâ
ret
; <20> áâனª  §­ ª®£¥­. ¨ ¥£® ॣ¨áâà æ¨ï
; ¢å®¤: a=­®¬¥à §­ ª®£¥­.
; hl=¤ ­­ë¥
; bc=à §¬¥à ¤ ­­ëå
.fill_data_font:
ld e,l ld e,l
ld d,h ld d,h
ld bc,512-1
ld (hl),#FF ld (hl),#FF
inc de inc de
ldir ldir
ld de,.buffer ; §­ ª®£¥­. ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª "
ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­. call .set_font
jp ToBIOS ; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
;ret call .get_font
; ¨­¢¥àâ¨à㥬 ä®­â
ld hl,.buffer
ld bc,.buffer.size
.loop_font: ld a,(hl)
cpl
ld (hl),a
cpi
jp pe,.loop_font
; ;
ENDIF ;------------------------------; ld a,INS_CUR_ZG ; ­®¬¥à §­ ª®£¥­. "¡«®ª"
call .set_font
;
pop af
out (SLOT3),a ; ¢®ááâ. ¯®àâ
ret
;
.set_font: ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­.
jr ._font
;
.get_font: ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­.
._font: ld de,.buffer ; ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå
jp ToBIOS
;
; ENDIF ;------------------------------;

View File

@ -77,7 +77,7 @@
; LEN3 EQU 30 ; FTASK EQU 42 ; LEN3 EQU 30 ; FTASK EQU 42
; ;
STRUCT _sFatBuffer STRUCT _sFS_Buffer
.DRIVE: BYTE #FF .DRIVE: BYTE #FF
.FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit) ; fat32 .FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit) ; fat32
.CacheBlock: WORD #0000 .CacheBlock: WORD #0000
@ -121,7 +121,7 @@
STRUCT _sBuffers STRUCT _sBuffers
.FileManipulator _sFM ; 44 bytes + 44 bytes * (FMCOUNT-1) .FileManipulator _sFM ; 44 bytes + 44 bytes * (FMCOUNT-1)
.FM_RESERVE BLOCK _sFM * (FMCOUNT-1),0 ; .FM_RESERVE BLOCK _sFM * (FMCOUNT-1),0 ;
.FatBuffer _sFatBuffer .FS_Buffer _sFS_Buffer
;.BootSector BLOCK 90,0 ; _sBOOT_SECTOR_PARAMS: 62 bytes FAT16, 90 bytes FAT32 ;.BootSector BLOCK 90,0 ; _sBOOT_SECTOR_PARAMS: 62 bytes FAT16, 90 bytes FAT32
.EXE_Header _sEXE_HEADER ; 512 bytes .EXE_Header _sEXE_HEADER ; 512 bytes
.Stack _sStack ; 256 bytes .Stack _sStack ; 256 bytes

View File

@ -1 +1 @@
28 29

View File

@ -21,7 +21,7 @@
DEFINE CHANGE_LANG_CTRL_SHIFT 1 ; [x] 0: Ctrl + Space, 1: Ctrl + Shift. DEFINE CHANGE_LANG_CTRL_SHIFT 1 ; [x] 0: Ctrl + Space, 1: Ctrl + Shift.
DEFINE BREAK_PROCESS_CODE #AC00 ; CTRL+C DEFINE BREAK_PROCESS_CODE #AC00 ; CTRL+C
DEFINE USE_E1_SCANCODE 0 DEFINE USE_E1_SCANCODE 0
DEFINE CLASSIC_CURSOR 0 ; DEFINE CLASSIC_CURSOR 0
; ;
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥ ;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
@ -92,16 +92,16 @@ FAT_CACHE:
;.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1) ;.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 1)
;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1 ;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////
;
DEFINE DSS_MAX_SECTOR_SIZE 512
DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE MAX_RAMDRIVES 16
DEFINE NeedSafePort_Y 1 DEFINE NeedSafePort_Y 1
DEFINE TABisSPACES 0 ; DEFINE TABisSPACES 0
DEFINE EnoughtOnly_LF 0 ; DEFINE EnoughtOnly_LF 0
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
DEFINE NON_REMOVABLE_FDD 0 DEFINE NON_REMOVABLE_FDD 0
;
DSS_MAX_SECTOR_SIZE EQU 512
DSS_MAX_DRIVES_AMOUNT EQU 26
MAX_RAMDRIVES EQU 16
MINIMUM_BIOS_VERSION EQU 3*256 + 06 ; version 2.55
DEFINE STR_MINIMUM_BIOS_VERSION '0' + high MINIMUM_BIOS_VERSION, '.', '0'+(low MINIMUM_BIOS_VERSION)/10, '0'+(low MINIMUM_BIOS_VERSION)-((low MINIMUM_BIOS_VERSION)/10)*10
; ;
;-------------------[MEMORY]-------------------------; ;-------------------[MEMORY]-------------------------;

View File

@ -39,9 +39,10 @@ cmd_cls: ex de,hl ; hl=
cls_clear: ld a,b cls_clear: ld a,b
ld (color_screen),a ;  âਡãâ ld (color_screen),a ;  âਡãâ
ld de,0 ; Y/X ¯®«®¦. ld de,0 ; Y/X ¯®«®¦.
ld hl,#2050 ; Y/X à §¬¥à ld hl,#2050 ; Y/X à §¬¥à ;!HARDCODE win size
ld c,BIOS.LP_CLS_WIN ; ®ç¨áâ¨âì ®ª­® (¢ë¢®¤®¬ ¯à®¡¥«®¢) ld a," "
RST ToBIOS ld c,Dss.Clear ; ®ç¨áâ¨âì ®ª­®
RST ToDSS
; ãáâ. ªãàá®à ¢ Home ; ãáâ. ªãàá®à ¢ Home
ld de,0 ; Y/X ¯®«®¦. ld de,0 ; Y/X ¯®«®¦.
ld c,Dss.Locate ld c,Dss.Locate

View File

@ -4,14 +4,17 @@
; ;
;/////////////////////////////////////////////////// ;///////////////////////////////////////////////////
cmd_help: LD HL,.help_txt cmd_help: LD HL,.help_txt
LD A,(color_screen) JP PRINTZ
EX AF,AF' ; LD A,(color_screen)
XOR A ; AND A ; no attr-mode
LD BC,BIOS.LP_PR_LINE_DIR ; EX AF,AF'
JP ToBIOS ;!FIXIT â¥áâ®¢ë© ¢ à¨ ­â, ¯¥à¥¤¥« âì ­  DSS ; XOR A ; no XY-mode
; LD BC,BIOS.LP_PR_LINE_DIR
; LD IY,0 ; YH = YL = B
; JP ToBIOS
;JP ECHO_MESSAGE ;JP ECHO_MESSAGE
; 1 2 3 4 5 6 7 8 ; 1 2\ 3 4 5 6 7 8
; 01234567890123456789012345678901234567890123456789012345678901234567890123456789; ; 01234567890123456789012345678901234567890123456789012345678901234567890123456789;
.help_txt: DB "COMMANDS:\r\n" .help_txt: DB "COMMANDS:\r\n"
DB "SET INFO REN = RENAME PATH CLS [ink]\r\n" DB "SET INFO REN = RENAME PATH CLS [ink]\r\n"
@ -20,3 +23,12 @@ cmd_help: LD HL,.help_txt
DZ "RD = RMDIR DATE REBOOT DIR [path] [/p /f]\r\n\n" DZ "RD = RMDIR DATE REBOOT DIR [path] [/p /f]\r\n\n"
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
; ;
;LP_PR_LINE_DIR:
; A -  âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®«  ¥á«¨ ZF=0
; CF - XY-mode
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥, ¥á«¨ CF=1
; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
; B - à §¤¥«¨â¥«ì
; IY - ¤¢  ᯥæ.ᨬ¢®«  ¤«ï ¢ë室  á CF=1. „®«¦­ë ¡ëâì à ¢­ë B, ¥á«¨ ­¥ ­ã¦­ë
; A' - 梥⠪®­á®«¨ (¨á¯®«ì§ã¥âáï ¯à¨ áªà®««¥ ¨ ®ç¨á⪥ ®ª­ )
; CF' - ¢ë¢®¤¨âì ᨬ¢®« á  âਡãâ ¬¨

View File

@ -83,12 +83,12 @@ print_compath:
; ®ç¨áâ¨âì íªà ­. áâபã ; ®ç¨áâ¨âì íªà ­. áâபã
ld de,(cursor_position) ; Y/X ¯®«®¦. ld de,(cursor_position) ; Y/X ¯®«®¦.
ld e,0 ld e,0
ld hl,#0150 ; Y/X à §¬¥à ld hl,#0150 ; Y/X à §¬¥à ;!HARDCODE win size
ld a,(color_screen) ;  âਡãâ ld a,(color_screen) ;  âਡãâ
ld b,a ld b,a
ld a," " ; ᨬ¢®« ®ç¨á⪨ ld a," " ; ᨬ¢®« ®ç¨á⪨
ld c,BIOS.LP_CLS_WIN2 ; ®ç¨áâ¨âì ®ª­® ld c,Dss.Clear ; ®ç¨áâ¨âì ®ª­®
RST ToBIOS RST ToDSS
pop bc pop bc
; ¢ë¢¥á⨠íªà ­. ¯ãâì ; ¢ë¢¥á⨠íªà ­. ¯ãâì
ld hl,Buffers.screen_path ; íªà ­. ¯ãâì ld hl,Buffers.screen_path ; íªà ­. ¯ãâì

View File

@ -19,7 +19,6 @@ MAIN_MSG:
.DIR_2 EQU .DIR_2_ .DIR_2 EQU .DIR_2_
.DIR_3 EQU .DIR_3_ .DIR_3 EQU .DIR_3_
.DIR_4 EQU .DIR_4_ .DIR_4 EQU .DIR_4_
;.HELP EQU .HELP_
.CALCULATING EQU .CALC_ .CALCULATING EQU .CALC_
.CRLF EQU .CRLF_ .CRLF EQU .CRLF_
.INFO_1 EQU .INFO_1_ .INFO_1 EQU .INFO_1_
@ -51,12 +50,6 @@ MAIN_MSG:
DZ " %4 Dir(s)\r %5 byte(s) capacity\r\n" DZ " %4 Dir(s)\r %5 byte(s) capacity\r\n"
stN .DIR_4_ : DZ " Free space %5 byte(s)\r\n" stN .DIR_4_ : DZ " Free space %5 byte(s)\r\n"
stN .DIR_3_ : DZ "%4 %5 %3 %1 %2 \r\n" ;DATE TIME SIZE FILENAME EXT stN .DIR_3_ : DZ "%4 %5 %3 %1 %2 \r\n" ;DATE TIME SIZE FILENAME EXT
; ;!TODO ¯¥ç â âì ­¥ ç¥à¥§ ECHO_MESSAGE
; stN .HELP_ : db "COMMANDS:\r\n"
; db "SET INFO REN = RENAME PATH CLS [ink] "
; db "CD = CHDIR DEL = ERASE HELP VER = VERSION "
; db "MD = MKDIR TIME ECHO EXIT "
; DZ "RD = RMDIR DATE REBOOT DIR [path] [/p /f] \r\n\n"
stN .CALC_ : DZ "Calculating free space...\r" stN .CALC_ : DZ "Calculating free space...\r"
stN .INFO_1_ : DZ "\r\nDrive File System Label Serial number Size in bytes\r\n" stN .INFO_1_ : DZ "\r\nDrive File System Label Serial number Size in bytes\r\n"
stN .INFO_2_ : DZ " %9 \r\t %8\r\t\t\t %7\r\t\t\t\t\t %4\r\t\t\t\t\t\t\t %5\r\n" stN .INFO_2_ : DZ " %9 \r\t %8\r\t\t\t %7\r\t\t\t\t\t %4\r\t\t\t\t\t\t\t %5\r\n"

View File

@ -56,6 +56,48 @@ LCPIR: xor a
.no_mess: INC HL .no_mess: INC HL
RET RET
;----------------------------------------------------------------------;
; ”®à¬ â¨à®¢ ­­ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ­®¢ª®©  à£ã¬¥­â®¢ ¢¬¥áâ® %1-%9
; ¢å®¤: hl=¡ãä¥à áâப¨
;----------------------------------------------------------------------;
PRINTZ: ld a,(hl)
inc hl
or a
ret z
;
cp '%'
jr z,.check_PRM
.char: ld c,Dss.PutChar
RST ToDSS
jp PRINTZ
;
.bad_PRM: ld a,'%'
jp .char
;
.check_PRM: ld a,(hl)
cp '9'+1
jr nc,.bad_PRM
;
inc hl
sub '1'
push hl
ADD A
ADD A
ADD A
ADD A
LD L,A
LD H,0
;
ld bc,Buffers.bat_params.PRM1
add hl,bc
ld c,Dss.PChars ; ¢ë¢®¤ áâப¨
RST ToDSS
pop hl
jp PRINTZ
/*
;[x] ¨á¯à ¢«¥­ ¡ £ á ¢ë室®¬ §  ¯à¥¤¥«ë ¡ãä¥à  PRM. —ãâì ®¯â¨¬¨§¨à®¢ ­  ;[x] ¨á¯à ¢«¥­ ¡ £ á ¢ë室®¬ §  ¯à¥¤¥«ë ¡ãä¥à  PRM. —ãâì ®¯â¨¬¨§¨à®¢ ­ 
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ”®à¬ â¨à®¢ ­­ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ­®¢ª®©  à£ã¬¥­â®¢ ¢¬¥áâ® %1-%9 ; ”®à¬ â¨à®¢ ­­ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ­®¢ª®©  à£ã¬¥­â®¢ ¢¬¥áâ® %1-%9
@ -100,7 +142,7 @@ PRINTZ: ld a,(hl)
RST ToDSS RST ToDSS
pop hl pop hl
jp PRINTZ jp PRINTZ
*/
; ¡ãä¥àë  à£ã¬¥­â®¢ ª®¬ ­¤­®© áâப¨ ; ¡ãä¥àë  à£ã¬¥­â®¢ ª®¬ ­¤­®© áâப¨
; PRM1: BLOCK 16,0 ;  à£ã¬¥­â %1 ; PRM1: BLOCK 16,0 ;  à£ã¬¥­â %1

View File

@ -1 +1 @@
479 489

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