mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
CORE: переделка PutChar и PChars под функцию BIOS LP_PR_LINE_DIR
This commit is contained in:
parent
a64eeadd97
commit
eae2582230
@ -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)
|
||||
|
||||
@ -9,6 +9,12 @@
|
||||
; 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
|
||||
;
|
||||
.shell_color: DB COLORS.CGA.INK.LGRAY
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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' - ¢ë¢®¤¨âì ᨬ¢®« á âਡãâ ¬¨
|
||||
@ -4,95 +4,124 @@
|
||||
; ¢å®¤: A - ᨬ¢®«
|
||||
; ¢ë室: ¥â
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
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
|
||||
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
|
||||
JP ToBIOS
|
||||
; 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 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"
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
;
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
;----------------------------------------------------------------------;
|
||||
@ -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
|
||||
@ -349,19 +349,21 @@ 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 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
|
||||
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
|
||||
|
||||
;
|
||||
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, 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
|
||||
|
||||
;
|
||||
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!!!';
|
||||
|
||||
@ -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
|
||||
|
||||
*/
|
||||
397
DSS/FS/FAT.asm
397
DSS/FS/FAT.asm
File diff suppressed because it is too large
Load Diff
181
DSS/KEYINTER.ASM
181
DSS/KEYINTER.ASM
@ -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
|
||||
@ -295,45 +295,86 @@ cursor_interrupt:
|
||||
; <20> áâனª § ª®£¥¥à â®à ªãàá®à ç¥àâ®çª®©
|
||||
SETUP_CURSORS:
|
||||
.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
|
||||
;
|
||||
; [ ] 31/03/2025
|
||||
; ¯®«ãç¨âì á¨áâ. § ª®£¥.
|
||||
ld de,.buffer ;!HARDCODE ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ëå
|
||||
push de
|
||||
ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì § ª®£¥.
|
||||
rst ToBIOS
|
||||
call .get_font
|
||||
; § ¯®«¨âì ª®¤®¬ #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 hl,.buffer+(.buffer.size - (2*256)) ; ¯®á«¥¤¨¥ 512 ¡ ©â
|
||||
ld e,l
|
||||
ld d,h
|
||||
ld bc,512-1
|
||||
ld (hl),#FF
|
||||
inc de
|
||||
ldir
|
||||
ld de,.buffer ; § ª®£¥.
|
||||
ld c,BIOS.WIN_SET_ZG ; ãáâ. § ª®£¥.
|
||||
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
|
||||
;ret
|
||||
|
||||
|
||||
;
|
||||
ENDIF ;------------------------------;
|
||||
; ENDIF ;------------------------------;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1 +1 @@
|
||||
28
|
||||
29
|
||||
@ -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 DSS_MAX_SECTOR_SIZE 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 TABisSPACES 0
|
||||
; DEFINE EnoughtOnly_LF 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]-------------------------;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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' - ¢ë¢®¤¨âì ᨬ¢®« á âਡãâ ¬¨
|
||||
@ -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 ; íªà . ¯ãâì
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1 +1 @@
|
||||
479
|
||||
489
|
||||
@ -1 +1 @@
|
||||
Subproject commit 9143dcb7f8fd9cd3ae0bc179b94fced5efd8667f
|
||||
Subproject commit a9f5915a3275f5ffbafa0994bb97c5846aab826c
|
||||
Loading…
Reference in New Issue
Block a user