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
; JP C,NDISK11
; LD A,B
; LD (CORE_BUFFERS.FatBuffer.DRIVE),A
; LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
; CALL RD_BPB
; RET C
; LD A,(LDRIVE)

View File

@ -9,6 +9,12 @@
; B - <20><><EFBFBD><E0A8A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; <20><>室: <20><><EFBFBD>
;///////////////////////////////////////////////////////////////////////
CLEAR: LD C,BIOS.LP_CLS_WIN2
JP ToBIOS
CLEAR: LD C,A
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 DE,CORE_BUFFERS.SECTOR_BUFFER+1
LD DE,CORE_BUFFERS.BUFFER+1
CALL SCOPYS
LD A,#80 ;!HARDCODE cmd line size
SUB B
LD (CORE_BUFFERS.SECTOR_BUFFER),A
LD (CORE_BUFFERS.BUFFER),A
;
LD SP,CORE_BUFFERS.EXEBUFF + _sEXE_HEADER ;R02
; ! „ «¥¥ á⥪ ¢ ­ã«¥¢®© áâà ­¨æ¥! BIOS ¨ ­¥ DSS-MAIN ­¥ ¢ë§ë¢ âì
@ -445,7 +445,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
EX DE,HL
LD XH,D
LD XL,E
LD HL,CORE_BUFFERS.SECTOR_BUFFER
LD HL,CORE_BUFFERS.BUFFER
LD C,(HL)
INC C
LDIR

View File

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

View File

@ -5,10 +5,26 @@
; ¢ë室: HL - 㪠§ â¥«ì ­  á«¥¤ãîéãî áâபã ᨬ¢®«®¢
; PRINT NULL-TERMINATED CHARS STRING
;///////////////////////////////////////////////////////////////////////
PCHARS: LD A,(HL)
INC HL
OR A
RET Z
CALL PUTCHAR
JP PCHARS
; PCHARS: LD A,(HL)
; INC HL
; OR A
; RET Z
; CALL PUTCHAR
; 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 - ᨬ¢®«
; ¢ë室: ­¥â
;///////////////////////////////////////////////////////////////////////
PUTCHAR: ;CALL .NO_SCROLL
CP #0E
JR C,.control_characters
; PUTCHAR: ;CALL .NO_SCROLL
; CP #0E
; 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
;[x] CR+LF+SCROLL
RST ToBIOS
;
; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à  ¢ á ¬®¥ ­ ç «® (X:Y == 0:0)
CALL CURSOR
LD A,D
OR E
RET NZ
LD L,A
XOR A ; no attr-mode
LD H,A
PUSH HL ; ª« ¤ñ¬ ­  á⥪ ¯¥ç â ¥¬ë© ᨬ¢®«
LD L,A
ADD HL,SP
;
.LFF: PUSH HL
LD BC,1*256 + BIOS.LP_SCROLL_UD
LD DE,#0020
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
LD DE,#1F00
CALL LOCATE
LD A,' '
LD BC,#50*256 + BIOS.LP_PRINT_SYM
RST ToBIOS
LD DE,#1F00
CALL LOCATE
POP HL ; ¢®ááâ ­ ¢«¨¢ ¥¬ á⥪
;
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
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
JP ToBIOS
; .NO_SCROLL:
; .CHAR: DZ "X"
;///////////////////////////////////////////////////////////////////////

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -184,7 +184,7 @@ TMPNAME: DZ ' ' ; 12
; IN: A - drive number
OPENDSK: ;!TEST DRV.Open ŽĄĺŽ¤ R10
LD C,A
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
CP C
JR NZ,.open
PUSH BC
@ -202,12 +202,12 @@ OPENDSK: ;!TEST DRV.Open
POP BC
JP C,.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
PUSH DE
;
LD A,B
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
;
CALL RD_BPB
;[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
.error_bpb: PUSH AF ; áŽĺ࠭/ ­ŽŹĽŕ Žč¨ĄŞ¨
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
CP D
JR Z,.next_check
;
@ -245,15 +245,15 @@ OPENDSK: ;!TEST DRV.Open
SCF
JR Z,.set_panic
;
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
CALL OPENDSK.force
JR NC,.err_exit
;
LD A,(BOOTDSK.NUM)
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
CALL OPENDSK.force
;
.err_exit: LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
.err_exit: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A'
LD (CORE_BUFFERS.CurrentPath),A
POP AF
@ -384,7 +384,7 @@ MASK: LD HL,TMPNAME
;----------------------------------------------------------------------;
;!TEST Current Dir ;[x] 15/10/23
DIR_PATH_CHANGE:
.FullCurrent: LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
.FullCurrent: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A'
LD (CORE_BUFFERS.CurrentPath),A
;
@ -393,7 +393,7 @@ DIR_PATH_CHANGE:
;
.FullWork: LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A'
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
;
.Work: LD HL,CORE_BUFFERS.WorkDirectory
JP CURRDIR_FN
@ -419,7 +419,7 @@ DIR_PATH_CHECK: LD A,(HL)
JR Z,.checkDir
;
LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A'
CP (HL)
JR NZ,.gotoPath
@ -459,7 +459,7 @@ DIR_PATH_CHECK: LD A,(HL)
JR .gotoPath
;
.checkDrive: LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
ADD 'A'
CP (HL)
RET
@ -588,3 +588,22 @@ MOVE_CP:
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]> ;
_mInfoBLOCK 8-$,#FF ;
RST_0x08: PUSH AF ;
LD A,SYS_PORT.PAGE8;
LD A,SYS_PORT.BIOS ;
OUT (SYS_PORT.ON),A ;
POP AF ;
RET ;
@ -190,14 +190,14 @@ RST_10: PUSH HL
IF SHORT_RSTx10_TABLE
;[ ] R09
LD H,A
LD A,#5F
LD A,+(DSS_API_TABLE.low_short)
SUB C
JR C,.error
LD A,H
;[ ] R09
ENDIF
LD H,high ADRST10
LD H,high DSS_API_TABLE
LD C,(HL)
INC H
LD H,(HL)
@ -254,7 +254,7 @@ CLEAR_BUFFER_AND_INIT_PROC:
LD (CORE_BUFFERS.WorkDirectory),A
;
LD A,#FF
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
;
;R07 ;R11
;R11
@ -265,9 +265,9 @@ CLEAR_BUFFER_AND_INIT_PROC:
;R02
;LD B,#FF ;INIT ENVIRONMENT
CALL INITENV
IFN CLASSIC_CURSOR
; IFN CLASSIC_CURSOR
CALL SETUP_CURSORS
ENDIF
; ENDIF
;R02
JP VERSION
@ -289,9 +289,9 @@ INTx38_Handler: PUSH AF
LD C,Dss.Mouse.GetPackets
RST ToDSS.Mouse
;CALL M_INT
IFN CLASSIC_CURSOR
; IFN CLASSIC_CURSOR
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à  ;!!!!! VASIL
ENDIF
; ENDIF
POP IY
POP IX
POP HL
@ -335,7 +335,7 @@ INTx38_Handler: PUSH AF
;------------------------------------------------------------------------------------------------------------------------;
GO_ZERO EQU #0000
;FUNCTION ADDRESS ARRAY
ADRST10: ;DS 512 ;,0
DSS_API_TABLE: ;DS 512 ;,0
;...............................................[LOW ADDRESS ]:
; 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
@ -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 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 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
;[ ] R09
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 ; 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
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
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, 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
;
ELSE ;!TODO free space
_mInfoBLOCK ADRST10+#100 - $,0
_mInfoBLOCK DSS_API_TABLE+#100 - $,0
;[ ] R09
ENDIF
;...............................................[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 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
;[ ] R09
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
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
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
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, high NOPS, high NOPS, high NOPS, high NOPS
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS ; END
;
ELSE
;!TODO free space
;_mInfoBLOCK ADRST10+#200 - $,0
;_mInfoBLOCK DSS_API_TABLE+#200 - $,0
;[ ] R09
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
@ -405,7 +409,7 @@ ADRST10: ;DS 512 ;,0
; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb
CHECK_64kb_CLUSTER:
LD HL,(CORE_BUFFERS.FatBuffer.BytesPerCluster)
LD HL,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
; CF=0
ADC HL,HL
LD A,DSS_Error.sys.WRITE_PROTECT
@ -458,7 +462,7 @@ BUFFERSplace _sBuffers=$
FM_BUF _sFM = BUFFERSplace.FileManipulator
.Size EQU _sFM
.FullSize EQU FMCOUNT*FM_BUF.Size
FatBuffer _sFatBuffer = BUFFERSplace.FatBuffer
FS_Buffer _sFS_Buffer = BUFFERSplace.FS_Buffer
EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header
XSTACK _sStack = BUFFERSplace.Stack
.Spoint EQU XSTACK + _sStack
@ -492,8 +496,8 @@ CLEAR_ZONE.size EQU _sBuffers
DISPLAY " FM_BUF ", /H, CORE_BUFFERS.FM_BUF
DISPLAY " FM_BUF.Size: ", /H, CORE_BUFFERS.FM_BUF.Size
DISPLAY " FM_BUF.FullSize ", /H, CORE_BUFFERS.FM_BUF.FullSize
DISPLAY " FatBuffer ", /H, CORE_BUFFERS.FatBuffer
DISPLAY " FatBuffer.Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.FatBuffer
DISPLAY " FS_Buffer ", /H, CORE_BUFFERS.FS_Buffer
DISPLAY " FS_Buffer.Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.FS_Buffer
DISPLAY " EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
DISPLAY " Size ", /H, CORE_BUFFERS.XSTACK - CORE_BUFFERS.EXEBUFF
DISPLAY " XSTACK ", /H, CORE_BUFFERS.XSTACK
@ -508,7 +512,7 @@ CLEAR_ZONE.size EQU _sBuffers
EXPORT CORE_BUFFERS.BUFFERSplace
EXPORT CORE_BUFFERS.FM_BUF
EXPORT CORE_BUFFERS.FatBuffer
EXPORT CORE_BUFFERS.FS_Buffer
EXPORT CORE_BUFFERS.EXEBUFF
EXPORT CORE_BUFFERS.XSTACK
EXPORT CORE_BUFFERS.BUFFER
@ -567,18 +571,19 @@ F_START: DI
;
;R12
LD C,BIOS.DRV_VERSION
LD HL,0 ; ¯¨á âì ¢ ­¨ªã¤ 
LD C,BIOS.FN_VERSION
RST ToBIOS
JR C,.err_oldBIOS
EX DE,HL
LD DE,MINIMUM_BIOS_VERSION
SBC HL,DE
JR NC,.good
LD A,(.saveDRV+1)
CP 2 ;¯à®¢¥àª  ­  § £à㧪ã á ¤¨áª¥âë, ¥á«¨ á ¤¨áª¥âë, â® ¬®¦­® ¯à®¨£­®à¨âì § ¯ã᪠­  BIOS ­¨¦¥ 2.55
JR NC,.err_oldBIOS
LD HL,#C9AF ; XOR A : RET opcodes
LD (DRV_CONTENT + INITDVC.if_old),HL ;!!!!!!
JR C,.err_oldBIOS
; LD A,(.saveDRV+1)
; CP 2 ;¯à®¢¥àª  ­  § £à㧪ã á ¤¨áª¥âë, ¥á«¨ á ¤¨áª¥âë, â® ¬®¦­® ¯à®¨£­®à¨âì § ¯ã᪠­  BIOS ­¨¦¥ 2.55
; JR NC,.err_oldBIOS
; LD HL,#C9AF ; XOR A : RET opcodes
; LD (DRV_CONTENT + INITDVC.if_old),HL
;
.good: CALL DEPLOY ;R07 ;íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï
@ -608,7 +613,7 @@ F_START: DI
;
EI
;Set new address fn. VERSION
LD HL,ADRST10
LD HL,DSS_API_TABLE
LD (HL),low VERSION ;R03
INC H
LD (HL),high VERSION ;R03
@ -616,14 +621,18 @@ F_START: DI
;
;R12
.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
;RST ToDSS
CALL PCHARS
SCF
RET
.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
@ -678,6 +687,7 @@ DEPLOY: ;Allocate memory
; C_OSTYPE
;--- --- --- --- --- --- --- --- --- --- --- ---;
DISPLAY "FAT MODULE SIZE: ",/A,FAT_MODULE_SIZE
DISPLAY "DEPLOY end address: ",/H,$
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes."
@ -689,7 +699,6 @@ DRV_CONTENT.SIZE EQU $-DRV_CONTENT
BIN_END_ADDRESS EQU $
DISPLAY "END ADDRESS: ",/H,BIN_END_ADDRESS
DISPLAY "Memory leacks when > ",/H, #4000+SUBLOAD_SIZE*512
ASSERT $ < (#4001+SUBLOAD_SIZE*512),'-> Memory leack!!!';

View File

@ -1,4 +1,4 @@
; INITDISK - ¨­¨æ¨ «¨§ æ¨ï ¡ãª¢ë ¤¨áª 
; INITDISK - ¨­¨æ¨ «¨§ æ¨ï ¡ãª¢ë ¤¨áª  - ¯¥à¥­¥á⨠ªã᮪ ¢ RD_BPB
; LOADDIR - § £à㧪  á CDFS ¤¨à¥ªâ®à¨¨ ¨  ¤ ¯â æ¨ï ¯®¤ FAT
;
/*
@ -6,7 +6,8 @@
CHECK_ROOT_CLUSTER
NEW RST:
-= RST ToDSS.FS =-
RD_BPB - shared_fs.asm - ¡à âì ᨣ­ âãàã #AA55 ¨«¨ ¨§ CDFS.RD_BPB ¨ ¤ «¥¥ 㦥 RST_FS
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
.CURCOUNT+1: LD A,#FF
INC A
LD (.CURCOUNT),A
AND #FF
JR NZ,.NOTUR
.CURSYM+1: LD A,#00
XOR #01
LD (.CURSYM),A
; ECHOKEY: ;R01
; .CURCOUNT+1: LD A,#FF
; INC A
; LD (.CURCOUNT),A
; AND #FF
; JR NZ,.NOTUR
; .CURSYM+1: LD A,#00
; XOR #01
; LD (.CURSYM),A
CALL CURSOR
PUSH DE
; CALL CURSOR
; PUSH DE
LD A," "
JR Z,.CURSKI
LD A,"_"
.CURSKI: CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
; LD A," "
; JR Z,.CURSKI
; LD A,"_"
; .CURSKI: CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
POP DE
CALL LOCATE
;LD A,8 ; BACKSPACE
;CALL PUTCHAR
.NOTUR: CALL SCANKEY
JR Z,ECHOKEY
PUSH DE
PUSH BC
PUSH AF
; POP DE
; CALL LOCATE
; ;LD A,8 ; BACKSPACE
; ;CALL PUTCHAR
; .NOTUR: CALL SCANKEY
; JR Z,ECHOKEY
; PUSH DE
; PUSH BC
; PUSH AF
CALL CURSOR
PUSH DE
; CALL CURSOR
; PUSH DE
LD A," "
CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
; LD A," "
; CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
;LD A,8 ; BACKSPACE
;CALL PUTCHAR
POP DE
POP AF
PUSH DE
;R01 [v]
CALL PUTCHAR.NO_SCROLL ; [x] -bug with Vasil's version of cursor
; ;LD A,8 ; BACKSPACE
; ;CALL PUTCHAR
; POP DE
; POP AF
; PUSH DE
; ;R01 [v]
; CALL PUTCHAR.NO_SCROLL ; [x] -bug with Vasil's version of cursor
POP DE
CALL LOCATE
; POP DE
; CALL LOCATE
POP BC
POP DE
LD A,E
AND A
RET
; POP BC
; POP DE
; LD A,E
; AND A
; RET
ELSE ;------------------------------;
; ELSE ;------------------------------;
;------; !FIXIT ¡à âì §­ ç¥­¨ï ¤«ï §­ ª®£¥­¥à â®à  ¨§ ¡¨®á ?
@ -203,7 +203,7 @@ ECHOKEY: CALL Cursor_On ;
POP AF
OR A
; [x] -bug with Vasil's version of cursor
CALL NZ,PUTCHAR.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" ­  íªà ­
CALL NZ,PUTCHAR;.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" ­  íªà ­
POP BC
POP DE
LD A,E
@ -294,46 +294,87 @@ cursor_interrupt:
; <20> áâனª  §­ ª®£¥­¥à â®à  ªãàá®à  ç¥àâ®çª®©
SETUP_CURSORS:
.buffer EQU #C000
;
in a,(SLOT3)
push af ; á®åà. ¯®àâ
ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘
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
ld de,.buffer ; §­ ª®£¥­.
ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­.
jp ToBIOS
;ret
.buffer EQU #C000
.buffer.size EQU 2048
;
in a,(SLOT3)
push af ; á®åà. ¯®àâ
ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘
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
;
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
STRUCT _sFM ; 54 bytes
; from FAT
; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
; .NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
; .EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT
; .ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT
; .RESERVED_NT: BYTE #00 ;+ #0C +12 RESERVED
@ -35,8 +35,8 @@
; .CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED
; .RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED
; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED
; .TIME: WORD #0000 ;+ #16 +22 TIME
; .DATE: WORD #0000 ;+ #18 +24 DATE
; .TIME: WORD #0000 ;+ #16 +22 TIME
; .DATE: WORD #0000 ;+ #18 +24 DATE
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
.FS_REC FAT_DIRECTORY_RECORD
@ -77,7 +77,7 @@
; LEN3 EQU 30 ; FTASK EQU 42
;
STRUCT _sFatBuffer
STRUCT _sFS_Buffer
.DRIVE: BYTE #FF
.FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit) ; fat32
.CacheBlock: WORD #0000
@ -121,7 +121,7 @@
STRUCT _sBuffers
.FileManipulator _sFM ; 44 bytes + 44 bytes * (FMCOUNT-1)
.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
.EXE_Header _sEXE_HEADER ; 512 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 BREAK_PROCESS_CODE #AC00 ; CTRL+C
DEFINE USE_E1_SCANCODE 0
DEFINE CLASSIC_CURSOR 0
; DEFINE CLASSIC_CURSOR 0
;
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
@ -92,16 +92,16 @@ FAT_CACHE:
;.Size_Mask_12 EQU high (.Size/.bytes_record_12 - 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
DEFINE MAX_RAMDRIVES 16
DEFINE NeedSafePort_Y 1
DEFINE TABisSPACES 0
DEFINE EnoughtOnly_LF 0
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
DEFINE NON_REMOVABLE_FDD 0
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]-------------------------;

View File

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

View File

@ -4,14 +4,17 @@
;
;///////////////////////////////////////////////////
cmd_help: LD HL,.help_txt
LD A,(color_screen)
EX AF,AF'
XOR A
LD BC,BIOS.LP_PR_LINE_DIR
JP ToBIOS ;!FIXIT â¥áâ®¢ë© ¢ à¨ ­â, ¯¥à¥¤¥« âì ­  DSS
JP PRINTZ
; LD A,(color_screen)
; AND A ; no attr-mode
; EX AF,AF'
; XOR A ; no XY-mode
; LD BC,BIOS.LP_PR_LINE_DIR
; LD IY,0 ; YH = YL = B
; JP ToBIOS
;JP ECHO_MESSAGE
; 1 2 3 4 5 6 7 8
; 1 2\ 3 4 5 6 7 8
; 01234567890123456789012345678901234567890123456789012345678901234567890123456789;
.help_txt: DB "COMMANDS:\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"
; ; ; ; ; ; ; ; ; ; ; ; ;
;
;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 e,0
ld hl,#0150 ; Y/X à §¬¥à
ld hl,#0150 ; Y/X à §¬¥à ;!HARDCODE win size
ld a,(color_screen) ;  âਡãâ
ld b,a
ld a," " ; ᨬ¢®« ®ç¨á⪨
ld c,BIOS.LP_CLS_WIN2 ; ®ç¨áâ¨âì ®ª­®
RST ToBIOS
ld c,Dss.Clear ; ®ç¨áâ¨âì ®ª­®
RST ToDSS
pop bc
; ¢ë¢¥á⨠íªà ­. ¯ãâì
ld hl,Buffers.screen_path ; íªà ­. ¯ãâì

View File

@ -19,7 +19,6 @@ MAIN_MSG:
.DIR_2 EQU .DIR_2_
.DIR_3 EQU .DIR_3_
.DIR_4 EQU .DIR_4_
;.HELP EQU .HELP_
.CALCULATING EQU .CALC_
.CRLF EQU .CRLF_
.INFO_1 EQU .INFO_1_
@ -51,12 +50,6 @@ MAIN_MSG:
DZ " %4 Dir(s)\r %5 byte(s) capacity\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
; ;!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 .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"

View File

@ -56,6 +56,48 @@ LCPIR: xor a
.no_mess: INC HL
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. —ãâì ®¯â¨¬¨§¨à®¢ ­ 
;----------------------------------------------------------------------;
; ”®à¬ â¨à®¢ ­­ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ­®¢ª®©  à£ã¬¥­â®¢ ¢¬¥áâ® %1-%9
@ -100,7 +142,7 @@ PRINTZ: ld a,(hl)
RST ToDSS
pop hl
jp PRINTZ
*/
; ¡ãä¥àë  à£ã¬¥­â®¢ ª®¬ ­¤­®© áâப¨
; PRM1: BLOCK 16,0 ;  à£ã¬¥­â %1

View File

@ -1 +1 @@
479
489

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