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

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
@ -347,21 +347,23 @@ ADRST10: ;DS 512 ;,0
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low GET_ERR, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45 DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low GET_ERR, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
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
;[ ] R09
.low_short EQU $ - DSS_API_TABLE
IFN SHORT_RSTx10_TABLE IFN SHORT_RSTx10_TABLE
;[ ] R09 ;
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
DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO; 110-239 6E-EF DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 110-239 6E-EF
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,19 +378,21 @@ 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
;[ ] R09
.high_short EQU $ - DSS_API_TABLE - .low_short
IFN SHORT_RSTx10_TABLE IFN SHORT_RSTx10_TABLE
;[ ] R09 ;
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
DB high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO
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
@ -294,46 +294,87 @@ cursor_interrupt:
; <20> áâனª  §­ ª®£¥­¥à â®à  ªãàá®à  ç¥àâ®çª®© ; <20> áâனª  §­ ª®£¥­¥à â®à  ªãàá®à  ç¥àâ®çª®©
SETUP_CURSORS: SETUP_CURSORS:
.buffer EQU #C000 .buffer EQU #C000
; .buffer.size EQU 2048
in a,(SLOT3) ;
push af ; á®åà. ¯®àâ in a,(SLOT3)
ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘ push af ; á®åà. ¯®àâ
out (SLOT3),a ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘
; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­. out (SLOT3),a
ld de,.buffer ;!HARDCODE ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå
push de ; ; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­. ; ld de,.buffer ;!HARDCODE ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå
rst ToBIOS ; push de
; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨ ; ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­.
ld hl,.buffer+(2048-(2*256)) ;!HARDCODE ¯®á«¥¤­¨¥ 512 ¡ ©â ; rst ToBIOS
ld bc,511 ; ; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨
ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª " ; ld hl,.buffer+(2048-(2*256)) ;!HARDCODE ¯®á«¥¤­¨¥ 512 ¡ ©â
call .fill_data_font ; ld bc,511
pop hl ; ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª "
; § ¯®«­¨âì ®áâ «ì­ë¥ 6 «¨­¨© (¯®«­ë© ¡«®ª) ; call .fill_data_font
ld bc,2048-513 ;!HARDCODE ; pop hl
ld a,INS_CUR_ZG ; ­®¬¥à §­ ª®£¥­. "¡«®ª" ; ; § ¯®«­¨âì ®áâ «ì­ë¥ 6 «¨­¨© (¯®«­ë© ¡«®ª)
call .fill_data_font ; ld bc,2048-513 ;!HARDCODE
pop af ; ld a,INS_CUR_ZG ; ­®¬¥à §­ ª®£¥­. "¡«®ª"
out (SLOT3),a ; ¢®ááâ. ¯®àâ ; call .fill_data_font
ret ; pop af
; <20> áâனª  §­ ª®£¥­. ¨ ¥£® ॣ¨áâà æ¨ï ; out (SLOT3),a ; ¢®ááâ. ¯®àâ
; ¢å®¤: a=­®¬¥à §­ ª®£¥­. ; ret
; hl=¤ ­­ë¥ ; ; <20> áâனª  §­ ª®£¥­. ¨ ¥£® ॣ¨áâà æ¨ï
; bc=à §¬¥à ¤ ­­ëå ; ; ¢å®¤: a=­®¬¥à §­ ª®£¥­.
.fill_data_font: ; ; hl=¤ ­­ë¥
ld e,l ; ; bc=à §¬¥à ¤ ­­ëå
ld d,h ; .fill_data_font:
ld (hl),#FF ; ld e,l
inc de ; ld d,h
ldir ; ld (hl),#FF
ld de,.buffer ; §­ ª®£¥­. ; inc de
ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­. ; ldir
jp ToBIOS ; .set: ld de,.buffer ; §­ ª®£¥­.
;ret ; ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­.
; jp ToBIOS
; ;
ENDIF ;------------------------------; ; [ ] 31/03/2025
; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
call .get_font
; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨
ld hl,.buffer+(.buffer.size - (2*256)) ; ¯®á«¥¤­¨¥ 512 ¡ ©â
ld e,l
ld d,h
ld bc,512-1
ld (hl),#FF
inc de
ldir
ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª "
call .set_font
; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
call .get_font
; ¨­¢¥àâ¨à㥬 ä®­â
ld hl,.buffer
ld bc,.buffer.size
.loop_font: ld a,(hl)
cpl
ld (hl),a
cpi
jp pe,.loop_font
;
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

@ -26,7 +26,7 @@
;[ ] fat32 ;[ ] fat32
STRUCT _sFM ; 54 bytes STRUCT _sFM ; 54 bytes
; from FAT ; from FAT
; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME ; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
; .EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT ; .EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT
; .ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT ; .ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT
; .RESERVED_NT: BYTE #00 ;+ #0C +12 RESERVED ; .RESERVED_NT: BYTE #00 ;+ #0C +12 RESERVED
@ -35,8 +35,8 @@
; .CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED ; .CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED
; .RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED ; .RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED
; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED ; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED
; .TIME: WORD #0000 ;+ #16 +22 TIME ; .TIME: WORD #0000 ;+ #16 +22 TIME
; .DATE: WORD #0000 ;+ #18 +24 DATE ; .DATE: WORD #0000 ;+ #18 +24 DATE
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32 ; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE ; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
.FS_REC FAT_DIRECTORY_RECORD .FS_REC FAT_DIRECTORY_RECORD
@ -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 NeedSafePort_Y 1
; DEFINE TABisSPACES 0
; DEFINE EnoughtOnly_LF 0
DEFINE NON_REMOVABLE_FDD 0
; ;
DEFINE DSS_MAX_SECTOR_SIZE 512 DSS_MAX_SECTOR_SIZE EQU 512
DSS_MAX_DRIVES_AMOUNT EQU 26 DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE MAX_RAMDRIVES 16 MAX_RAMDRIVES EQU 16
DEFINE NeedSafePort_Y 1 MINIMUM_BIOS_VERSION EQU 3*256 + 06 ; version 2.55
DEFINE TABisSPACES 0 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
DEFINE EnoughtOnly_LF 0
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
DEFINE NON_REMOVABLE_FDD 0
; ;
;-------------------[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