mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
prepare
This commit is contained in:
parent
49af2b4266
commit
e6aa5aa304
@ -1,6 +1,7 @@
|
|||||||
; HL - BUFFER ADDRESS
|
; HL - BUFFER ADDRESS
|
||||||
; DE - BLOCK SIZE
|
; DE - BLOCK SIZE
|
||||||
; A - FM
|
; A - FM
|
||||||
|
; [ ] CDFS
|
||||||
READ: LD (.R_POINT),HL
|
READ: LD (.R_POINT),HL
|
||||||
LD (.S_POINT),HL
|
LD (.S_POINT),HL
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
|
|||||||
@ -1,57 +1,6 @@
|
|||||||
;[BEGIN]
|
|
||||||
;//MODULE: DOS_X
|
|
||||||
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
|
|
||||||
;//UPDATE: 24-10-1999 DNS Restore module
|
|
||||||
;---------------------------------------------------------------
|
|
||||||
;Rev Date Name Description
|
|
||||||
;---------------------------------------------------------------
|
|
||||||
;R13 06-04-2023 BAO ”ãªæ¨î SETBOOT ¬®¦® ¢ë§¢ âì ⮫쪮 à § (¥á«¨ § ¢¥àè¨âáï ª®à४â®)
|
|
||||||
;R12 03-04-2023 BAO „®¡ ¢«¥ äãªæ¨ï à¥áª ¤à ©¢®¢ LD C,8 : RST #10
|
|
||||||
;R11 15-04-2003 DNS ROUTINE FOR STORE CURDISK AND CURDIR
|
|
||||||
;R10 03-04-2003 DNS IMPROVED FN. VERSION
|
|
||||||
;R09 27-03-2003 DNS PASTED SET/GET BOOT FN.
|
|
||||||
;R08 14-11-2002 DNS IMPROVE BPB-FUNCTION
|
|
||||||
;R07 17-12-1999 DNS BUG FIX SIGNATURE #55AA AT 510 OFFSET
|
|
||||||
;R06 21-11-1999 DNS FN. DISKINF SUPPORT ALL DISKS
|
|
||||||
;R05 21-11-1999 DNS BUG FIX SIGNATURE #55AA IN BOOT SECTOR
|
|
||||||
;R04 08-11-1999 DNS KILL OLD FUNCTIONS
|
|
||||||
;R03 23-11-1998 DNS BUG FIX (IX+28) -> (IY+28)
|
|
||||||
;R02 21-11-1998 DNS CHANGE FUNCTION "MAKE FAT"
|
|
||||||
;R01 20-11-1998 DNS REPAIR FUNCTION "SAVE"
|
|
||||||
;---------------------------------------------------------------
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; HL - 11 bytes filename "FILENAMEEXT"
|
; HL - 11 bytes filename "FILENAMEEXT"
|
||||||
; DE - DOS filename "FILENAME.EXT",0
|
; DE - DOS filename "FILENAME.EXT",0
|
||||||
; GetName:
|
|
||||||
; LD BC,#08FF
|
|
||||||
; .GETN1: LD A,(HL)
|
|
||||||
; CP " "
|
|
||||||
; JR NZ,.GETN3
|
|
||||||
; .GETN2: INC HL
|
|
||||||
; DJNZ .GETN2
|
|
||||||
; JR .GETN4
|
|
||||||
; .GETN3: LDI
|
|
||||||
; DJNZ .GETN1
|
|
||||||
; ;
|
|
||||||
; .GETN4: LD A,(HL)
|
|
||||||
; CP " "
|
|
||||||
; LD A,"."
|
|
||||||
; JR NZ,.GETN5
|
|
||||||
; LD A,#00
|
|
||||||
; .GETN5: LD (DE),A
|
|
||||||
; INC DE
|
|
||||||
; RET Z
|
|
||||||
; LD B,#03
|
|
||||||
; .GETN6: LD A,(HL)
|
|
||||||
; CP " "
|
|
||||||
; RET Z
|
|
||||||
; LDI
|
|
||||||
; XOR A
|
|
||||||
; LD (DE),A
|
|
||||||
; DJNZ .GETN6
|
|
||||||
; RET
|
|
||||||
;---------------;---------------;---------------
|
|
||||||
;!TODO LFN
|
;!TODO LFN
|
||||||
GetName: LD BC,#08FF ;!HARDCODE ¤«¨ ¨¬¥¨ + áçñâ稪
|
GetName: LD BC,#08FF ;!HARDCODE ¤«¨ ¨¬¥¨ + áçñâ稪
|
||||||
LD A,' '
|
LD A,' '
|
||||||
@ -59,7 +8,7 @@ GetName: LD BC,#08FF ;!HARDCODE
|
|||||||
JR Z,.skip
|
JR Z,.skip
|
||||||
LDI
|
LDI
|
||||||
DJNZ .loop
|
DJNZ .loop
|
||||||
JP .extension
|
JR .extension
|
||||||
;
|
;
|
||||||
.skip: LD C,B
|
.skip: LD C,B
|
||||||
LD B,0
|
LD B,0
|
||||||
@ -91,48 +40,43 @@ GetName: LD BC,#08FF ;!HARDCODE
|
|||||||
; ¢å®¤: hl=áâப ¨¬¥¨
|
; ¢å®¤: hl=áâப ¨¬¥¨
|
||||||
; ¢ë室: (TMPNAME)
|
; ¢ë室: (TMPNAME)
|
||||||
SetPath_GetName:
|
SetPath_GetName:
|
||||||
; !TEST
|
INC HL
|
||||||
INC HL
|
LD A,(HL)
|
||||||
LD A,(HL)
|
DEC HL
|
||||||
DEC HL
|
CP ':'
|
||||||
CP ':'
|
JR NZ,.dir_loop
|
||||||
JR NZ,.dir_loop
|
;
|
||||||
|
LD A,(HL)
|
||||||
LD A,(HL)
|
CP 'a'
|
||||||
CP 'a'
|
JR C,.next
|
||||||
JR C,.next
|
CP 'z'+1
|
||||||
CP 'z'+1
|
JR NC,.next
|
||||||
JR NC,.next
|
SUB %0010'0000
|
||||||
SUB %0010'0000
|
.next: SUB 'A'
|
||||||
.next: SUB 'A'
|
INC HL
|
||||||
INC HL
|
INC HL
|
||||||
INC HL
|
PUSH HL
|
||||||
PUSH HL
|
CALL CHDISK
|
||||||
CALL CHDISK
|
POP HL
|
||||||
;CALL OPENDSK
|
RET C
|
||||||
POP HL
|
LD A,(HL)
|
||||||
RET C
|
OR A
|
||||||
LD A,(HL)
|
JR Z,.done
|
||||||
OR A
|
CP ' '
|
||||||
JR Z,.done
|
JR Z,.done
|
||||||
CP ' ' ;
|
CP '\' ;
|
||||||
JR Z,.done
|
SCF
|
||||||
CP '\' ;
|
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||||
SCF
|
RET NZ
|
||||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
INC HL
|
||||||
RET NZ
|
|
||||||
INC HL
|
|
||||||
;
|
;
|
||||||
.dir_loop: LD DE,TMPNAME
|
.dir_loop: LD DE,TMPNAME
|
||||||
LD BC,#0DFF
|
LD BC,#0DFF
|
||||||
.loop: LD A,(HL)
|
.loop: LD A,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
CP '\' ;
|
CP '\' ;
|
||||||
JR Z,.DIR_NAME
|
JR Z,.DIR_NAME
|
||||||
; AND A
|
;
|
||||||
; JR Z,.DIR_NAME
|
|
||||||
;CP ':'
|
|
||||||
;JR Z,.DRV_NAME
|
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
INC DE
|
INC DE
|
||||||
CP ' '+1
|
CP ' '+1
|
||||||
@ -155,25 +99,7 @@ SetPath_GetName:
|
|||||||
POP HL
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
JR .dir_loop
|
JR .dir_loop
|
||||||
; .DRV_NAME:
|
;
|
||||||
; LD A,(TMPNAME)
|
|
||||||
; CP 'a'
|
|
||||||
; JR C,.next
|
|
||||||
; CP '{'
|
|
||||||
; JR NC,.next
|
|
||||||
; SUB #20
|
|
||||||
; .next: SUB 'A'
|
|
||||||
; PUSH HL
|
|
||||||
; ;!TEST CHDISK OPENDSK
|
|
||||||
; ;CALL OPENDSK
|
|
||||||
; CALL CHDISK
|
|
||||||
; ;
|
|
||||||
; POP HL
|
|
||||||
; RET C
|
|
||||||
; JR .loop
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
; <20>ãä¥à ¨¬¥¨ 8.3 ä®à¬ â
|
; <20>ãä¥à ¨¬¥¨ 8.3 ä®à¬ â
|
||||||
TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0 ;!FIXIT ª ¡ãä¥à ¬
|
TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0 ;!FIXIT ª ¡ãä¥à ¬
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
@ -210,7 +136,7 @@ OPENDSK: ;!TEST DRV.Open
|
|||||||
LD A,B
|
LD A,B
|
||||||
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
|
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
|
||||||
;
|
;
|
||||||
CALL RD_BPB
|
CALL RD_BPB ; [ ] cdfs
|
||||||
;[x] 29/02/2024 fix "open drive error"
|
;[x] 29/02/2024 fix "open drive error"
|
||||||
POP DE
|
POP DE
|
||||||
JR C,.error_bpb
|
JR C,.error_bpb
|
||||||
@ -292,97 +218,97 @@ OPENDSK: ;!TEST DRV.Open
|
|||||||
; DE - 11 bytes filename
|
; DE - 11 bytes filename
|
||||||
; RET: C=2 FILE WITHOUT EXTENTION
|
; RET: C=2 FILE WITHOUT EXTENTION
|
||||||
; C=1 FILE WITH EXTENTION
|
; C=1 FILE WITH EXTENTION
|
||||||
MASK: LD HL,TMPNAME
|
MASK: LD HL,TMPNAME
|
||||||
.name: LD DE,MASKARE
|
.name: LD DE,MASKARE
|
||||||
.custom: PUSH HL
|
.custom: PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD H,D
|
LD H,D
|
||||||
LD L,E
|
LD L,E
|
||||||
INC DE
|
INC DE
|
||||||
LD (HL),' '
|
LD (HL),' '
|
||||||
LD BC,10 ;!HARDCODE = size (FileName + Extension - 1)
|
LD BC,10 ;!HARDCODE = size (FileName + Extension - 1)
|
||||||
LDIR
|
LDIR
|
||||||
POP DE
|
POP DE
|
||||||
POP HL
|
POP HL
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
CP '.' ;R007
|
CP '.' ;R007
|
||||||
SCF ;R007
|
SCF ;R007
|
||||||
JR Z,.MASKB ;R007
|
JR Z,.MASKB ;R007
|
||||||
CP ' '+1
|
CP ' '+1
|
||||||
.MASKB: LD A,DSS_Error.sys.INVALID_NAME
|
.MASKB: LD A,DSS_Error.sys.INVALID_NAME
|
||||||
RET C
|
RET C
|
||||||
LD BC,#0902 ; B - áç¥â稪
|
LD BC,#0902 ; B - áç¥â稪
|
||||||
.MASK1: LD A,(HL)
|
.MASK1: LD A,(HL)
|
||||||
CP ' '+1
|
CP ' '+1
|
||||||
CCF
|
CCF
|
||||||
RET NC
|
RET NC
|
||||||
;
|
;
|
||||||
CP '*'
|
CP '*'
|
||||||
JR Z,.MASK3
|
JR Z,.MASK3
|
||||||
CP '.'
|
CP '.'
|
||||||
JR Z,.MASK5
|
JR Z,.MASK5
|
||||||
CP '"'
|
CP '"'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '+'
|
CP '+'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP ','
|
CP ','
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '/'
|
CP '/'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP ':'
|
CP ':'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP ';'
|
CP ';'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '<'
|
CP '<'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '='
|
CP '='
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '>'
|
CP '>'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '['
|
CP '['
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '\'
|
CP '\'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP ']'
|
CP ']'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CP '|'
|
CP '|'
|
||||||
JR Z,.MASK_ERR
|
JR Z,.MASK_ERR
|
||||||
CALL UPPER ; a..z -> A..Z
|
CALL UPPER ; a..z -> A..Z
|
||||||
.MASK2: LD (DE),A
|
.MASK2: LD (DE),A
|
||||||
INC HL
|
INC HL
|
||||||
INC DE
|
INC DE
|
||||||
DJNZ .MASK1
|
DJNZ .MASK1
|
||||||
.MASK_ERR:
|
;
|
||||||
LD A,DSS_Error.sys.INVALID_NAME
|
.MASK_ERR: LD A,DSS_Error.sys.INVALID_NAME
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.MASK3: LD A,'?'
|
.MASK3: LD A,'?'
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .MASK6
|
DJNZ .MASK6
|
||||||
JR .MASK_ERR
|
JR .MASK_ERR
|
||||||
;
|
;
|
||||||
.MASK6: LD (DE),A
|
.MASK6: LD (DE),A
|
||||||
INC DE
|
INC DE
|
||||||
DJNZ .MASK6
|
DJNZ .MASK6
|
||||||
LD B,1
|
LD B,1
|
||||||
JR .MASK1
|
JR .MASK1
|
||||||
;
|
;
|
||||||
.MASK5: LD A,' '
|
.MASK5: LD A,' '
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .MASK4
|
DJNZ .MASK4
|
||||||
LD B,4
|
LD B,4
|
||||||
DEC C
|
DEC C
|
||||||
JR NZ,.MASK1
|
JR NZ,.MASK1
|
||||||
JR .MASK_ERR
|
JR .MASK_ERR
|
||||||
;
|
;
|
||||||
.MASK4: LD (DE),A
|
.MASK4: LD (DE),A
|
||||||
INC DE
|
INC DE
|
||||||
DJNZ .MASK4
|
DJNZ .MASK4
|
||||||
LD B,4
|
LD B,4
|
||||||
DEC C
|
DEC C
|
||||||
JR NZ,.MASK1
|
JR NZ,.MASK1
|
||||||
JR .MASK_ERR
|
JR .MASK_ERR
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
@ -473,14 +399,13 @@ DIR_PATH_CHECK: LD A,(HL)
|
|||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
CHECK_NAME:
|
CHECK_NAME: LD HL,MASKARE
|
||||||
LD HL,MASKARE
|
.custom: LD BC,11 ;!HARDCODE
|
||||||
.custom: LD BC,11 ;!HARDCODE
|
LD A,"?"
|
||||||
LD A,"?"
|
CPIR
|
||||||
CPIR
|
LD A,DSS_Error.sys.INVALID_NAME
|
||||||
LD A,DSS_Error.sys.INVALID_NAME
|
SCF
|
||||||
SCF
|
RET
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
@ -579,37 +504,43 @@ GET_FM: LD B,FMCOUNT
|
|||||||
;FP COMPARE
|
;FP COMPARE
|
||||||
; CY - FILE POINTER > SIZE
|
; CY - FILE POINTER > SIZE
|
||||||
; NC - FILE POINTER < SIZE
|
; NC - FILE POINTER < SIZE
|
||||||
MOVE_CP:
|
MOVE_CP: LD L,(IY + _sFM.FS_REC.F_SIZE)
|
||||||
LD L,(IY + _sFM.FS_REC.F_SIZE)
|
LD H,(IY + _sFM.FS_REC.F_SIZE+1)
|
||||||
LD H,(IY + _sFM.FS_REC.F_SIZE+1)
|
LD E,(IY + _sFM.F_POSITION)
|
||||||
LD E,(IY + _sFM.F_POSITION)
|
LD D,(IY + _sFM.F_POSITION+1)
|
||||||
LD D,(IY + _sFM.F_POSITION+1)
|
|
||||||
AND A
|
|
||||||
SBC HL,DE
|
|
||||||
LD L,(IY + _sFM.FS_REC.F_SIZE+2)
|
|
||||||
LD H,(IY + _sFM.FS_REC.F_SIZE+3)
|
|
||||||
LD E,(IY + _sFM.F_POSITION+2)
|
|
||||||
LD D,(IY + _sFM.F_POSITION+3)
|
|
||||||
SBC HL,DE
|
|
||||||
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
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
JP Z,FAT_BPB
|
LD L,(IY + _sFM.FS_REC.F_SIZE+2)
|
||||||
|
LD H,(IY + _sFM.FS_REC.F_SIZE+3)
|
||||||
|
LD E,(IY + _sFM.F_POSITION+2)
|
||||||
|
LD D,(IY + _sFM.F_POSITION+3)
|
||||||
|
SBC HL,DE
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; a..z -> A..Z
|
||||||
|
UPPER: CP 'a'
|
||||||
|
RET C
|
||||||
|
CP 'z' + 1
|
||||||
|
JR NC,.CheckRUS
|
||||||
|
.Dec: SUB #20
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
; CDFS check
|
.CheckRUS: CP ' ' ; àãááª ï ¡ãª¢ , ª®¤ #A0
|
||||||
|
RET C
|
||||||
|
CP '¯'+1 ; àãááª ï ¡ãª¢ ¯, ª®¤ #AF + 1
|
||||||
|
JR C,.Dec
|
||||||
;
|
;
|
||||||
|
.BGUPPER: CP 'à' ; àãááª ï ¡ãª¢ à, ª®¤ #E0
|
||||||
|
RET C
|
||||||
|
CP 'ð' ; àãááª ï ¡ãª¢ ð, ª®¤ #F0
|
||||||
|
JR NC,.HGUPPER
|
||||||
|
SUB #50
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
.UnknownBPB: LD A,DSS_Error.sys.UNKNOWN_FORMAT
|
.HGUPPER: CP 'ñ' ; àãááª ï ¡ãª¢ ñ, ª®¤ #F1
|
||||||
SCF
|
RET NZ
|
||||||
|
DEC A
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
789
DSS/DSS-MAIN.ASM
789
DSS/DSS-MAIN.ASM
@ -1,162 +1,143 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
;[BEGIN]
|
;[ ] 㢥«¨ç¨âì ¤«¨ã PATH ¨ áâப¨ BAT
|
||||||
;//MODULE: DOS-MAIN AUTHOR: Denis Parinov
|
;[ ] ¯ãâì ⥪ã饣® ª â «®£ ¢ DIR ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ® ¤«¨¥¥ 256 ¡ ©â®¢
|
||||||
;//CREATE: A LONG TIME AGO :)
|
;[ ] ¯ãâì ¢ ¯à¨£« 襨¨ ª®á®«¨ ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ¯ãâì ¤«¨¥¥ 256 ¡ ©â®¢
|
||||||
;---------------------------------------------------------------
|
////////////////////////////////////////////////////////////////////////
|
||||||
;Rev Date Name Description
|
|
||||||
;---------------------------------------------------------------
|
|
||||||
;[ ] 㢥«¨ç¨âì ¤«¨ã PATH ¨ áâப¨ BAT
|
|
||||||
;[ ] ¯ãâì ⥪ã饣® ª â «®£ ¢ DIR ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ® ¤«¨¥¥ 256 ¡ ©â®¢
|
|
||||||
;[ ] ¯ãâì ¢ ¯à¨£« 襨¨ ª®á®«¨ ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ¯ãâì ¤«¨¥¥ 256 ¡ ©â®¢
|
|
||||||
;[ ] ;!FIXIT ª ª®©-â® ¡ £ ¯à¨ ª®â®à®¬ ¥á«¨ ¥â ¤¨áª ¨ ¥£® ¯®«¥§âì, â® ¢áñ «®¬ ¥âáï
|
|
||||||
;R12 24-07-2023 BAO Check minimum BIOS version on boot
|
|
||||||
;R11 17-04-2023 BAO OPTIMIZED BUFFERS, FREED UP 768 BYTES FOR CODE
|
|
||||||
;R10 14-04-2023 BAO €¢ à¨©ë© § ¢¨á® á ¢ë¢®¤®¬ á®®¡é¥¨ï ¯à¨ áâ à⥠á¨á⥬ë, ¥á«¨ ¥â ᢮¡®¤®© ¯ ¬ïâ¨
|
|
||||||
;R09 08-04-2023 BAO ‘®ªà 饨¥ à §¬¥à â ¡«¨æë API ¤® 96 äãªæ¨© (0 - #5F). (Ž¯æ¨® «ì® ¯à¨ ª®¬¯¨«ï樨)
|
|
||||||
;R08 15-04-2003 DNS RENAMED FN. OPEN AND CLOSE
|
|
||||||
;R07 31-03-2003 DNS NEW DEPLOYING ROUTINE
|
|
||||||
;R06 31-03-2003 DNS RELAYOUTING MEMORY
|
|
||||||
;R05 27-03-2003 DNS CHANGE DRV. INIT. METHOD
|
|
||||||
;R04 27-03-2003 DNS DRIVERS MOVE TO SPECIAL PAGE
|
|
||||||
;R03 14-03-2003 DNS CODE OPTIMIZATION
|
|
||||||
;R02 19-11-2002 DNS ADD ENVIRONMENT INITIALIZATION
|
|
||||||
;R01 14-11-2002 DNS CUT AND MOVE BPB-STRUCT
|
|
||||||
;---------------------------------------------------------------
|
|
||||||
; OUTPUT './Build/system.dos'
|
|
||||||
|
|
||||||
; MODULE MAIN
|
|
||||||
//SPRINTER EQU 2000
|
|
||||||
|
|
||||||
includelua 'Shared_includes/lua/Functions.lua'
|
|
||||||
include 'shared_includes/structures/FileSystem.inc'
|
|
||||||
include 'shared_includes/constants/sp2000.inc'
|
|
||||||
INCLUDE 'defines.inc'
|
|
||||||
include 'Structures.inc'
|
|
||||||
include 'shared_includes/constants/standart_colors.inc'
|
|
||||||
include 'shared_includes/constants/bios_equ.inc'
|
|
||||||
include 'shared_includes/constants/dss_equ.inc'
|
|
||||||
include 'shared_includes/macroses/accelerator.z80'
|
|
||||||
include 'shared_includes/macroses/macros.z80'
|
|
||||||
INCLUDE 'VERSION.INC'
|
|
||||||
INCLUDE 'DSS_MACROSES.Z80'
|
|
||||||
|
|
||||||
;PAGEDRV EQU #00
|
;PAGEDRV EQU #00
|
||||||
|
;DIRPAGE EQU 0
|
||||||
|
;FATPAGE EQU 1
|
||||||
|
;TXTPAGE EQU 2
|
||||||
|
;ENVPAGE EQU 2
|
||||||
|
;DRVPAGE EQU 3
|
||||||
|
;ENVPAGE EQU 3
|
||||||
|
;DRVPAGE EQU 4
|
||||||
|
;TXTADDR EQU #C000
|
||||||
|
;ENVADDR EQU #E400
|
||||||
|
;DIR EQU #C000
|
||||||
|
;FAT EQU #C000
|
||||||
|
|
||||||
; DIRPAGE EQU 0
|
INCLUDELUA 'Shared_includes/lua/Functions.lua'
|
||||||
; FATPAGE EQU 1
|
INCLUDE 'shared_includes/structures/FileSystem.inc'
|
||||||
; TXTPAGE EQU 2
|
INCLUDE 'shared_includes/constants/sp2000.inc'
|
||||||
; ENVPAGE EQU 2
|
INCLUDE 'defines.inc'
|
||||||
; DRVPAGE EQU 3
|
INCLUDE 'Structures.inc'
|
||||||
; ENVPAGE EQU 3
|
INCLUDE 'shared_includes/constants/standart_colors.inc'
|
||||||
; DRVPAGE EQU 4
|
INCLUDE 'shared_includes/constants/bios_equ.inc'
|
||||||
|
INCLUDE 'shared_includes/constants/dss_equ.inc'
|
||||||
; TXTADDR EQU #C000
|
INCLUDE 'shared_includes/macroses/accelerator.z80'
|
||||||
; ENVADDR EQU #E400
|
INCLUDE 'shared_includes/macroses/macros.z80'
|
||||||
|
INCLUDE 'VERSION.INC'
|
||||||
; DIR EQU #C000
|
INCLUDE 'DSS_MACROSES.Z80'
|
||||||
; FAT EQU #C000
|
|
||||||
|
|
||||||
|
|
||||||
;
|
|
||||||
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||||||
ORG 0
|
ORG 0
|
||||||
;
|
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
; <[CLOSE TASK]> ;
|
|
||||||
RST_0x00: JP RETFAR ; ;EXECUTE.ASM R12
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
;CLOSE TASK
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
////////////////////////////////////////////////////////////////////////
|
||||||
; <[BIOS API]> ;
|
RST_0x00: JP RETFAR ;EXECUTE.ASM
|
||||||
_mInfoBLOCK 8-$,#FF ;
|
////////////////////////////////////////////////////////////////////////
|
||||||
RST_0x08: PUSH AF ;
|
|
||||||
LD A,SYS_PORT.BIOS ;
|
|
||||||
OUT (SYS_PORT.ON),A ;
|
|
||||||
POP AF ;
|
|
||||||
RET ;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
; <[DSS API]> ;
|
|
||||||
_mInfoBLOCK #10-$,#FF ;
|
|
||||||
RST_0x10: JP RST_10 ;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
; <[DRIVE API]> ;
|
|
||||||
_mInfoBLOCK #18-$,#FF ;
|
|
||||||
;A0018 JP INTDISK ;
|
|
||||||
RST_0x18: PUSH AF ;
|
|
||||||
PUSH BC ;
|
|
||||||
DRV_PG_NUMBER+2: ;
|
|
||||||
LD BC,0*256+SLOT0 ;
|
|
||||||
JP PORTAL.out_MAIN ;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
;BIOS API
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
////////////////////////////////////////////////////////////////////////
|
||||||
; <[NOT USED]> ;
|
_mInfoBLOCK 8-$,#FF
|
||||||
_mInfoBLOCK #20-$,#FF ;
|
RST_0x08: PUSH AF
|
||||||
RST_0x20: JP RST_20 ;
|
LD A,SYS_PORT.BIOS
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
OUT (SYS_PORT.ON),A
|
||||||
;
|
POP AF
|
||||||
|
RET
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
|
;DSS API
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
_mInfoBLOCK #10-$,#FF
|
||||||
|
RST_0x10: JP RST_10
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;DRIVE API
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
_mInfoBLOCK #18-$,#FF ;
|
||||||
|
;A0018: JP INTDISK
|
||||||
|
RST_0x18: PUSH AF
|
||||||
|
PUSH BC
|
||||||
|
DRV_PG_NUMBER+2:
|
||||||
|
LD BC,0*256+SLOT0
|
||||||
|
JP PORTAL.out_MAIN
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;NOT USED
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
_mInfoBLOCK #20-$,#FF
|
||||||
|
RST_0x20: JP RST_20
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
RST_20:
|
RST_20:
|
||||||
RST_28:
|
RST_28:
|
||||||
NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION
|
NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
; <[NOT USED]> ;
|
|
||||||
_mInfoBLOCK #28-$,#FF ;
|
|
||||||
RST_0x28: JP RST_28 ;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
;NOT USED
|
||||||
; <[MOUSE API]> ;
|
////////////////////////////////////////////////////////////////////////
|
||||||
_mInfoBLOCK #30-$,#FF ;
|
_mInfoBLOCK #28-$,#FF
|
||||||
|
RST_0x28: JP RST_28
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;MOUSE API
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
_mInfoBLOCK #30-$,#FF
|
||||||
RST_0x30: PUSH AF
|
RST_0x30: PUSH AF
|
||||||
.drv_page+1: LD A,#FF
|
.drv_page+1: LD A,#FF
|
||||||
OUT (SLOT0),A
|
OUT (SLOT0),A
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; <[MAIN INT]>
|
|
||||||
_mInfoBLOCK #38-$,#FF
|
|
||||||
;¤«ï ⮣®, ç⮡ á®äâë ¬®£«¨ ¬¥ïâì ®¡à ¡®â稪 ᢮©.
|
|
||||||
RST_38_IM1: JP .Handler
|
;MAIN INT
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
_mInfoBLOCK #38-$,#FF
|
||||||
|
RST_38_IM1: JP .Handler ;¤«ï ⮣®, ç⮡ á®äâë ¬®£«¨ ¬¥ïâì ®¡à ¡®â稪 ᢮©.
|
||||||
|
;
|
||||||
.Handler: CALL INTx38_Handler
|
.Handler: CALL INTx38_Handler
|
||||||
EI
|
EI
|
||||||
RETI
|
RETI
|
||||||
;
|
;
|
||||||
|
; ¢ë室 ¨§ ®¡à ¡®â稪 ¢ DRV-MAIN.ASM
|
||||||
.Portal: PUSH AF
|
.Portal: PUSH AF
|
||||||
LD A,(RST_0x30.drv_page)
|
LD A,(RST_0x30.drv_page)
|
||||||
OUT (SLOT0),A
|
OUT (SLOT0),A
|
||||||
;POP AF
|
; ¢å®¤ ¢ ®¡à ¡®â稪 ¨§ DRV-MAIN.ASM
|
||||||
PUSH HL
|
; ¥á«¨ ¯à¨«®¦¥¨¥ ¨á¯®«ì§ã¥â ¯¥à¥å¢ â IM 1, â® ¨£®à ¯à¥àë¢ ¨ï ¨§ DRV-MAIN.ASM
|
||||||
LD HL,(RST_38_IM1+1)
|
PUSH HL
|
||||||
XOR A
|
LD HL,(RST_38_IM1+1)
|
||||||
CP H
|
XOR A
|
||||||
JR NZ,.error
|
CP H
|
||||||
LD A,low .Handler
|
JR NZ,.error
|
||||||
CP L
|
;
|
||||||
JR NZ,.error
|
LD A,low .Handler
|
||||||
|
CP L
|
||||||
|
JR NZ,.error
|
||||||
|
;
|
||||||
POP HL
|
POP HL
|
||||||
POP AF
|
POP AF
|
||||||
CALL INTx38_Handler
|
CALL INTx38_Handler
|
||||||
@ -165,113 +146,71 @@ RST_38_IM1: JP .Handler
|
|||||||
.error: POP HL
|
.error: POP HL
|
||||||
POP AF
|
POP AF
|
||||||
JR .Portal
|
JR .Portal
|
||||||
;
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
;
|
|
||||||
;NMI: RETN
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
////////////////////////////////////////////////////////////////////////
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
_mInfoBLOCK #66-$,#FF
|
||||||
; <[ NMI ]> ;
|
NMI_0x66: RETN
|
||||||
_mInfoBLOCK #66-$,#FF ;
|
|
||||||
NMI_0x66: RETN ;JP NMI ;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
;
|
|
||||||
RST_10: PUSH HL
|
|
||||||
LD L,C
|
|
||||||
IF SHORT_RSTx10_TABLE
|
|
||||||
;[ ] R09
|
|
||||||
LD H,A
|
|
||||||
LD A,+(DSS_API_TABLE.low_short)
|
|
||||||
SUB C
|
|
||||||
JR C,.error
|
|
||||||
LD A,H
|
|
||||||
;[ ] R09
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
LD H,high DSS_API_TABLE
|
|
||||||
LD C,(HL)
|
|
||||||
INC H
|
|
||||||
LD H,(HL)
|
|
||||||
LD L,C
|
|
||||||
EX (SP),HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
IF SHORT_RSTx10_TABLE
|
|
||||||
;[ ] R09
|
|
||||||
.error: POP HL
|
|
||||||
JR NOPS
|
|
||||||
;[ ] R09
|
|
||||||
ENDIF
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
; <[DRIVE PAGE SWITCH]> ;
|
|
||||||
_mInfoBLOCK #80-$,0 ;
|
|
||||||
;ENTER: ;
|
|
||||||
PORTAL.out_MAIN: ;
|
|
||||||
IN A,(C) ;
|
|
||||||
OUT (C),B ;
|
|
||||||
ASSERT $!=84,'-> Portal error!';
|
|
||||||
POP BC ;
|
|
||||||
RET ;
|
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
;R01
|
////////////////////////////////////////////////////////////////////////
|
||||||
; Area for boot sector BootSector.
|
RST_10: PUSH HL
|
||||||
;BootSector _sBOOT_SECTOR_PARAMS ,{ "DSS_","0"+VERS,".",MODF/10+"0",MODF-(MODF/10)*10+"0" }
|
LD L,C
|
||||||
; end boot sector
|
LD H,high DSS_API_TABLE
|
||||||
;R01
|
LD C,(HL)
|
||||||
|
INC H
|
||||||
|
LD H,(HL)
|
||||||
|
LD L,C
|
||||||
|
EX (SP),HL
|
||||||
|
RET
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;DRIVE PAGE SWITCH
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
_mInfoBLOCK #80-$,0
|
||||||
|
PORTAL.out_MAIN:
|
||||||
|
IN A,(C)
|
||||||
|
OUT (C),B
|
||||||
|
ASSERT $ != 84,'-> Portal error!'
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
CLEAR_BUFFER_AND_INIT_PROC:
|
CLEAR_BUFFER_AND_INIT_PROC:
|
||||||
;------[CLEAR BUFFERS]------;
|
XOR A
|
||||||
;R07 ;R11
|
LD HL,CLEAR_ZONE.start
|
||||||
XOR A
|
LD DE,CLEAR_ZONE.start+1
|
||||||
LD HL,CLEAR_ZONE.start
|
LD BC,CLEAR_ZONE.size-1
|
||||||
LD DE,CLEAR_ZONE.start+1
|
LD (HL),A
|
||||||
LD BC,CLEAR_ZONE.size-1
|
LDIR
|
||||||
LD (HL),A
|
LD HL,':'*256 + 'X'
|
||||||
LDIR
|
LD (CORE_BUFFERS.CurrentPath),HL
|
||||||
LD HL,':'*256 + 'X'
|
LD A,'\' ;
|
||||||
LD (CORE_BUFFERS.CurrentPath),HL
|
LD (CORE_BUFFERS.CurrentDirectory),A
|
||||||
LD A,'\' ;
|
LD (CORE_BUFFERS.WorkDirectory),A
|
||||||
LD (CORE_BUFFERS.CurrentDirectory),A
|
LD A,#FF
|
||||||
LD (CORE_BUFFERS.WorkDirectory),A
|
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
|
||||||
;
|
LD HL,CORE_BUFFERS.FM_BUF
|
||||||
LD A,#FF
|
LD (HL),'.'
|
||||||
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
|
;INIT ENVIRONMENT
|
||||||
;
|
CALL INITENV
|
||||||
;R07 ;R11
|
CALL SETUP_CURSORS
|
||||||
;R11
|
JP VERSION
|
||||||
LD HL,CORE_BUFFERS.FM_BUF
|
;
|
||||||
LD (HL),'.'
|
|
||||||
;R11
|
|
||||||
;---------------------------;
|
|
||||||
;R02
|
|
||||||
;LD B,#FF ;INIT ENVIRONMENT
|
|
||||||
CALL INITENV
|
|
||||||
; IFN CLASSIC_CURSOR
|
|
||||||
CALL SETUP_CURSORS
|
|
||||||
; ENDIF
|
|
||||||
;R02
|
|
||||||
JP VERSION
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;
|
||||||
INTx38_Handler: PUSH AF
|
INTx38_Handler: PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -287,10 +226,7 @@ INTx38_Handler: PUSH AF
|
|||||||
CALL KEYSCAN
|
CALL KEYSCAN
|
||||||
LD C,Dss.Mouse.GetPackets
|
LD C,Dss.Mouse.GetPackets
|
||||||
RST ToDSS.Mouse
|
RST ToDSS.Mouse
|
||||||
;CALL M_INT
|
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à
|
||||||
; IFN CLASSIC_CURSOR
|
|
||||||
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à ;!!!!! VASIL
|
|
||||||
; ENDIF
|
|
||||||
POP IY
|
POP IY
|
||||||
POP IX
|
POP IX
|
||||||
POP HL
|
POP HL
|
||||||
@ -304,67 +240,44 @@ INTx38_Handler: PUSH AF
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
;R03
|
;
|
||||||
;R07Allocate memory
|
|
||||||
; LD BC,#03C2
|
|
||||||
; RST ToBIOS
|
|
||||||
; LD HL,BANKTBL
|
|
||||||
; LD C,A
|
|
||||||
; LD B,#FF
|
|
||||||
;VERINIT INC B
|
|
||||||
; PUSH BC
|
|
||||||
; PUSH HL
|
|
||||||
; LD A,C
|
|
||||||
; LD C,#C4
|
|
||||||
; RST ToBIOS
|
|
||||||
; POP HL
|
|
||||||
; POP BC
|
|
||||||
; LD (HL),A
|
|
||||||
; INC HL
|
|
||||||
; JR NC,VERINIT
|
|
||||||
;R07;R03
|
|
||||||
;R07 JP INIT2 ;R03
|
|
||||||
; DS $/256+1*256-$,0 c:\bin\menu
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
;MEMTAB: BLOCK 256,0
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
|
|
||||||
_mInfoALIGN 256,0
|
_mInfoALIGN 256,0
|
||||||
;------------------------------------------------------------------------------------------------------------------------;
|
;------------------------------------------------------------------------------------------------------------------------;
|
||||||
GO_ZERO EQU #0000
|
GO_ZERO EQU #0000
|
||||||
;FUNCTION ADDRESS ARRAY
|
;FUNCTION ADDRESS ARRAY
|
||||||
DSS_API_TABLE: ;DS 512 ;,0
|
DSS_API_TABLE:
|
||||||
;...............................................[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 CHDISK_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 CHDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
|
||||||
DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
|
DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
|
||||||
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST_FN,low F_NEXT, low MKDIR.B, low RMDIR, low CHDIR_FN ; 2 14..1D
|
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST_FN,low F_NEXT, low MKDIR.B, low RMDIR, low CHDIR_FN ; 2 14..1D
|
||||||
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
|
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
|
||||||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
|
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
|
||||||
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
|
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
|
||||||
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, low NOPS, low NOPS, low NOPS, low NOPS ; 9 5A..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
|
||||||
;[ ] R09
|
|
||||||
.low_short EQU $ - DSS_API_TABLE
|
|
||||||
IFN SHORT_RSTx10_TABLE
|
|
||||||
;
|
;
|
||||||
DB low NOPS, low NOPS, low NOPS, low NOPS ; 9 60..63
|
DB low 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 ; 11 6E..77
|
||||||
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 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 ; 12 78..81
|
||||||
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 ; 13 82..8B
|
||||||
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 ; 14 8C..95
|
||||||
EDUP
|
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 ; 15 96..9F
|
||||||
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 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 ; 16 A0..A9
|
||||||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; END ; 25 FA..FF
|
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 ; 17 AA..B3
|
||||||
|
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 ; 18 B4..BD
|
||||||
|
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 ; 19 BE..C7
|
||||||
|
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 ; 20 C8..D1
|
||||||
|
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 ; 21 D2..DB
|
||||||
|
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 ; 22 DC..E5
|
||||||
|
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 ; 23 E6..EF
|
||||||
;
|
;
|
||||||
ELSE ;!TODO free space
|
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
|
||||||
_mInfoBLOCK DSS_API_TABLE+#100 - $,0
|
|
||||||
;[ ] R09
|
|
||||||
ENDIF
|
|
||||||
;...............................................[HIGH ADDRESS]:
|
;...............................................[HIGH ADDRESS]:
|
||||||
DB high F_START, high CHDISK_FN, high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
|
DB high F_START, high CHDISK_FN, high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
|
||||||
DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
|
DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
|
||||||
@ -375,47 +288,38 @@ DSS_API_TABLE: ;DS 512 ;,0
|
|||||||
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high GET_ERR,high GSWITCH,high DOSNAME, high EX_PATH
|
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high GET_ERR,high GSWITCH,high DOSNAME, high EX_PATH
|
||||||
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||||||
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, high NOPS, high NOPS, high NOPS, high NOPS
|
||||||
|
|
||||||
;[ ] R09
|
|
||||||
.high_short EQU $ - DSS_API_TABLE - .low_short
|
|
||||||
IFN SHORT_RSTx10_TABLE
|
|
||||||
;
|
|
||||||
DB high NOPS, high NOPS, high NOPS, high NOPS
|
|
||||||
DB high NOPS, high NOPS, high NOPS, high NOPS, 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
|
|
||||||
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
|
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
|
||||||
;!TODO free space
|
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
|
||||||
;_mInfoBLOCK DSS_API_TABLE+#200 - $,0
|
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
|
||||||
;[ ] R09
|
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
|
||||||
ENDIF
|
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 low WINREST, low PUTCHAR, low PCHARS, low NOPS, low NOPS, low PRINT, low NOPS, low NOPS, low NOPS, low NOPS ; 9 5A..63
|
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 WINREST,high PUTCHAR,high PCHARS, high NOPS, high NOPS, high PRINT, high NOPS, high NOPS, high NOPS, high NOPS
|
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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
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 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
|
||||||
;---------------------------------------------------------------------------------------------------------------------------------------------------------------;
|
;---------------------------------------------------------------------------------------------------------------------------------------------------------------;
|
||||||
;[INCLUDE]
|
|
||||||
;!TODO § ¬¥¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ¢ë§®¢ë ¡¨®á
|
|
||||||
INCLUDE "KEYINTER.ASM"
|
|
||||||
INCLUDE "API.ASM"
|
|
||||||
INCLUDE "DOS_Proc.asm"
|
|
||||||
INCLUDE "FS_Module.asm"
|
|
||||||
INCLUDE "Procedures.asm"
|
|
||||||
;INCLUDE "drivers/drv_to_sys_errors.asm" ; !TODO
|
|
||||||
|
|
||||||
; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb
|
|
||||||
CHECK_64kb_CLUSTER:
|
|
||||||
LD HL,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
|
;!TODO § ¬¥¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ¢ë§®¢ë ¡¨®á
|
||||||
; CF=0
|
INCLUDE "KEYINTER.ASM"
|
||||||
ADC HL,HL
|
INCLUDE "API.ASM"
|
||||||
LD A,DSS_Error.sys.WRITE_PROTECT
|
INCLUDE "DOS_FS.ASM"
|
||||||
RET NZ
|
INCLUDE "Procedures.asm"
|
||||||
CCF
|
INCLUDE "FS/FS.asm"
|
||||||
RET
|
;INCLUDE "drivers/drv_to_sys_errors.asm" ; !TODO
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;!FIXIT ª ¡ãä¥à ¬
|
;!FIXIT ª ¡ãä¥à ¬
|
||||||
@ -423,40 +327,21 @@ CHECK_64kb_CLUSTER:
|
|||||||
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE
|
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE
|
||||||
HANDBUF: BLOCK HANDBUF.SIZE,0
|
HANDBUF: BLOCK HANDBUF.SIZE,0
|
||||||
;
|
;
|
||||||
; ; FAT_DIRECTORY_RECORD ; !HARDCODE
|
|
||||||
|
;!FIXIT ª ¡ãä¥à ¬
|
||||||
MASKARE: BLOCK 8,0 ; ¨¬ï ä ©«
|
MASKARE: BLOCK 8,0 ; ¨¬ï ä ©«
|
||||||
BLOCK 3,0 ; à áè.
|
BLOCK 3,0 ; à áè.
|
||||||
BLOCK 21,0 ; 11+21=32
|
BLOCK 21,0 ; 11+21=32
|
||||||
;
|
;
|
||||||
DISPLAY "DOS-MAIN end address: ",/H,$-1
|
|
||||||
;
|
|
||||||
|
|
||||||
;!TODO ª ¡ãä¥à ¬!
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
/*
|
|
||||||
; 259
|
|
||||||
CurrentPath: DB 'X'
|
|
||||||
DB ':'
|
|
||||||
CurrentDirectory: DB '\'
|
|
||||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
|
||||||
BLOCK CurrentDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
|
||||||
;
|
|
||||||
; 257
|
|
||||||
WorkDirectory: DB '\'
|
|
||||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
|
||||||
BLOCK WorkDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
|
||||||
|
|
||||||
; 516
|
DISPLAY "DOS-MAIN end address: ",/H,$-1
|
||||||
*/
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
;
|
|
||||||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||||||
;
|
CLEAR_ZONE.start EQU $
|
||||||
;
|
MODULE CORE_BUFFERS
|
||||||
CLEAR_ZONE.start EQU $
|
|
||||||
|
|
||||||
MODULE CORE_BUFFERS
|
|
||||||
BUFFERSplace _sBuffers=$
|
BUFFERSplace _sBuffers=$
|
||||||
FM_BUF _sFM = BUFFERSplace.FileManipulator
|
FM_BUF _sFM = BUFFERSplace.FileManipulator
|
||||||
.Size EQU _sFM
|
.Size EQU _sFM
|
||||||
@ -465,8 +350,8 @@ 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
|
||||||
BUFFER EQU BUFFERSplace.Buffer
|
BUFFER EQU BUFFERSplace.Buffer
|
||||||
SECTOR_BUFFER EQU BUFFER ;!TODO ®â¤¥«¨âì SECTOR_BUFFER ®â BUFFER
|
SECTOR_BUFFER EQU BUFFER ;!TODO ®â¤¥«¨âì SECTOR_BUFFER ®â BUFFER
|
||||||
MemoryTable EQU BUFFERSplace.MemoryTable
|
MemoryTable EQU BUFFERSplace.MemoryTable
|
||||||
CurrentPath EQU BUFFERSplace.CurrentPath
|
CurrentPath EQU BUFFERSplace.CurrentPath
|
||||||
CurrentDirectory EQU BUFFERSplace.CurrentDirectory
|
CurrentDirectory EQU BUFFERSplace.CurrentDirectory
|
||||||
@ -474,19 +359,12 @@ CurrentDirectory EQU BUFFERSplace.CurrentDirectory
|
|||||||
WorkDirectory EQU BUFFERSplace.WorkDirectory
|
WorkDirectory EQU BUFFERSplace.WorkDirectory
|
||||||
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
;
|
CLEAR_ZONE.size EQU _sBuffers
|
||||||
; CurrentPath EQU CORE_BUFFERS.BUFFERSplace + _sBuffers
|
|
||||||
; CurrentDirectory EQU CurrentPath + 2
|
|
||||||
; .DEPTH: EQU DIRECTORY_PATH_LENGTH
|
|
||||||
; ;
|
|
||||||
; WorkDirectory EQU CurrentDirectory + 1 + CurrentDirectory.DEPTH
|
|
||||||
; .DEPTH: EQU DIRECTORY_PATH_LENGTH
|
|
||||||
;
|
|
||||||
CLEAR_ZONE.size EQU _sBuffers
|
|
||||||
|
|
||||||
|
|
||||||
ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||||
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
|
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
|
||||||
DISPLAY "CLEAR_ZONE.Size ", /H, CLEAR_ZONE.size
|
DISPLAY "CLEAR_ZONE.Size ", /H, CLEAR_ZONE.size
|
||||||
@ -519,217 +397,36 @@ CLEAR_ZONE.size EQU _sBuffers
|
|||||||
EXPORT CORE_BUFFERS.MemoryTable
|
EXPORT CORE_BUFFERS.MemoryTable
|
||||||
EXPORT CORE_BUFFERS.CurrentDirectory
|
EXPORT CORE_BUFFERS.CurrentDirectory
|
||||||
EXPORT CORE_BUFFERS.WorkDirectory
|
EXPORT CORE_BUFFERS.WorkDirectory
|
||||||
/*
|
|
||||||
;R11 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
|
||||||
FM_BUF _sFM=$
|
|
||||||
.Size EQU _sFM
|
|
||||||
.FullSize EQU FMCOUNT*FM_BUF.Size
|
|
||||||
|
|
||||||
;????? ¥ £à㧨âáï «¨ ¯®«®áâìî ᥪâ®à ¢ 512 ¡ ©â®¢ ¯à¨ § £à㧪¥ åí¤¥à ?
|
|
||||||
EXEBUFF _sEXE_HEADER=$+FM_BUF.FullSize
|
|
||||||
; EXEBUFF:
|
|
||||||
; DB "EXE"
|
|
||||||
; DB #00
|
|
||||||
; OFFCOD1 DW #0000
|
|
||||||
; OFFCOD2 DW #0000
|
|
||||||
; LOADER DW #0000
|
|
||||||
; DW #0000
|
|
||||||
; DW #0000
|
|
||||||
; DW #0000
|
|
||||||
; LD_ADDR DW #0000
|
|
||||||
; PC_REG DW #0000
|
|
||||||
; SP_REG DW #0000
|
|
||||||
; BLOCK 512-($-EXEBUFF),0
|
|
||||||
|
|
||||||
;(!!!HERE STACK FOR EXEC!!!)
|
|
||||||
; BLOCK 255,0
|
|
||||||
;XSTACK DB #00
|
|
||||||
XSTACK EQU EXEBUFF+_sEXE_HEADER+255
|
|
||||||
|
|
||||||
BUFFER EQU XSTACK+1
|
|
||||||
SECTOR_BUFFER EQU BUFFER
|
|
||||||
;R11 ////////////////////////////////
|
|
||||||
*/
|
|
||||||
|
|
||||||
;
|
;
|
||||||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||
; § âàñâáï ¯®á«¥ ¨¨æ¨ «¨§ 樨
|
; § âàñâáï ¯®á«¥ ¨¨æ¨ «¨§ 樨
|
||||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||
|
INCLUDE 'first_init.asm'
|
||||||
|
|
||||||
|
|
||||||
; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨¨æ¨ «¨§ 樨 ¤à¥á ¢ â ¡«¨æ¥ ¬¥ï¥âáï VERSION
|
|
||||||
F_START: DI
|
|
||||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
|
||||||
;LD (.saveDRV),A
|
|
||||||
LD H,A
|
|
||||||
LD (.saveDRV),HL ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
|
||||||
;
|
|
||||||
|
|
||||||
;R12
|
|
||||||
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 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 ;íâ ¯à®æ¥¤ãà § âàñâáï ¯®á«¥ ¨á¯®«¥¨ï
|
|
||||||
RET C ;R10
|
|
||||||
CALL KEYBOARD_INIT
|
|
||||||
CALL PRINT_INIT
|
|
||||||
LD C,Dss.Mouse.Init
|
|
||||||
RST ToDSS.Mouse
|
|
||||||
LD A,(VMODE)
|
|
||||||
LD C,Dss.Mouse.SetVideoMode
|
|
||||||
RST ToDSS.Mouse
|
|
||||||
;CALL INITDVC ;R05
|
|
||||||
;R05
|
|
||||||
LD C,Dss.DRV.Init
|
|
||||||
RST ToDSS.DRV
|
|
||||||
LD (LDRIVE),A
|
|
||||||
;R05
|
|
||||||
.saveDRV+1:
|
|
||||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
|
||||||
LD HL,0 ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
|
||||||
;LD A,H
|
|
||||||
;LD A,0
|
|
||||||
;
|
|
||||||
;LD B,1
|
|
||||||
CALL BOOTDSK.SET
|
|
||||||
RET C
|
|
||||||
;
|
|
||||||
EI
|
|
||||||
;Set new address fn. VERSION
|
|
||||||
LD HL,DSS_API_TABLE
|
|
||||||
LD (HL),low VERSION ;R03
|
|
||||||
INC H
|
|
||||||
LD (HL),high VERSION ;R03
|
|
||||||
JP CLEAR_BUFFER_AND_INIT_PROC
|
|
||||||
;
|
|
||||||
;R12
|
|
||||||
.err_oldBIOS:
|
|
||||||
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:
|
|
||||||
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
|
|
||||||
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
|
|
||||||
RST ToBIOS
|
|
||||||
RET C ;R10
|
|
||||||
LD C,A
|
|
||||||
|
|
||||||
IN A,(SLOT3)
|
|
||||||
PUSH AF
|
|
||||||
IN A,(SLOT0)
|
|
||||||
LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A ;!TEST
|
|
||||||
OUT (SLOT3),A
|
|
||||||
|
|
||||||
LD A,C
|
|
||||||
LD HL,BANKTBL + #C000
|
|
||||||
LD C,BIOS.GetMemBlkPages
|
|
||||||
RST ToBIOS
|
|
||||||
; ¤®«¦ ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
|
|
||||||
; § ªàë¢ èª¨ #FF ¯®áâ ¢¨âì áâà ¨æã COREPAGE
|
|
||||||
LD HL,BANKTBL + COREPAGE
|
|
||||||
IN A,(SLOT0)
|
|
||||||
LD (HL),A
|
|
||||||
; ¤«ï API ¤à ©¢¥à ¬ë誨
|
|
||||||
LD (MOUSE_HANDLER.CorePage),A
|
|
||||||
LD A,(BANKTBL + DRVPAGE)
|
|
||||||
LD (RST_0x30.drv_page),A
|
|
||||||
|
|
||||||
POP AF
|
|
||||||
OUT (SLOT3),A
|
|
||||||
|
|
||||||
SET_PAGE_X DRVPAGE
|
|
||||||
|
|
||||||
PUSH AF
|
|
||||||
LD HL,DRV_CONTENT
|
|
||||||
LD DE,#C000
|
|
||||||
LD BC,DRV_CONTENT.SIZE
|
|
||||||
LDIR
|
|
||||||
IN A,(SLOT3)
|
|
||||||
LD (DRV_PG_NUMBER),A
|
|
||||||
POP AF
|
|
||||||
OUT (SLOT3),A
|
|
||||||
AND A ;R10
|
|
||||||
RET
|
|
||||||
|
|
||||||
IF ENVVALUE != CORE_BUFFERS.BUFFER
|
IF ENVVALUE != CORE_BUFFERS.BUFFER
|
||||||
ASSERT "Warning! ENVVALUE != BUFFER"
|
ASSERT "Warning! ENVVALUE != BUFFER"
|
||||||
//BLOCK 1000,0
|
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
;--- --- --- --- [Build version] --- --- --- ---;
|
|
||||||
; C_OSTYPE
|
|
||||||
;--- --- --- --- --- --- --- --- --- --- --- ---;
|
|
||||||
|
|
||||||
DISPLAY "FAT MODULE SIZE: ",/A,FAT_MODULE_SIZE
|
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."
|
||||||
DRV_CONTENT:
|
|
||||||
DISP 0
|
|
||||||
INCLUDE 'DRV-MAIN.ASM'
|
|
||||||
ENT
|
|
||||||
DRV_CONTENT.SIZE EQU $-DRV_CONTENT
|
|
||||||
|
|
||||||
|
|
||||||
|
DRV_CONTENT: DISP 0
|
||||||
|
INCLUDE 'DRV-MAIN.ASM'
|
||||||
|
ENT
|
||||||
|
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!!!';
|
||||||
ASSERT DRV_CONTENT.SIZE < #4001,'-> Drivers code size > #4000!!!';
|
ASSERT DRV_CONTENT.SIZE < #4001,'-> Drivers code size > #4000!!!';
|
||||||
;[END]
|
;[END]
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
; DTA DB " "
|
|
||||||
; DB " "
|
|
||||||
; DB #20
|
|
||||||
; DW 0,0,0,0,0
|
|
||||||
; DW 0
|
|
||||||
; DW 0
|
|
||||||
; CLUSTER DW 0
|
|
||||||
; SIZE DW 0,0
|
|
||||||
; ASCIIZ DB "FILENAME.EXT",#00
|
|
||||||
|
|
||||||
|
|
||||||
;R06
|
|
||||||
;R06 BUFFER
|
|
||||||
;R06 SECTOR_BUFFER DB ". ",#10
|
|
||||||
;R06 DW 0,0,0,0,0
|
|
||||||
;R06 DW #0000
|
|
||||||
;R06 DW #0000
|
|
||||||
;R06 DW #0000
|
|
||||||
;R06 DW #0000,0000
|
|
||||||
;R06 DB ".. ",#10
|
|
||||||
;R06 DW 0,0,0,0,0
|
|
||||||
;R06 DW #0000
|
|
||||||
;R06 DW #0000
|
|
||||||
;R06 DW #0000
|
|
||||||
;R06 DW #0000,0000
|
|
||||||
;R06 DS 512-64 ;,0
|
|
||||||
@ -1,3 +1,47 @@
|
|||||||
|
;
|
||||||
|
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
||||||
|
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
||||||
|
; <20>Ž<EFBFBD>’ˆ’: HL, DE, IY.
|
||||||
|
MACRO LOGDRV_ENTRY_FIND tbl_addr
|
||||||
|
LD H,0
|
||||||
|
ADD HL,HL
|
||||||
|
ADD HL,HL
|
||||||
|
ADD HL,HL
|
||||||
|
ADD HL,HL
|
||||||
|
EX DE,HL
|
||||||
|
LD IY,tbl_addr
|
||||||
|
ADD IY,DE
|
||||||
|
ENDM
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
MACRO _CALC_DEVICE_ENTRY tbl_addr
|
||||||
|
CP DSS_MAX_DRIVES_AMOUNT+1
|
||||||
|
JR C,.norm
|
||||||
|
; Error!
|
||||||
|
LD A,DSS_MAX_DRIVES_AMOUNT
|
||||||
|
.norm: LD C,A
|
||||||
|
ADD A,A
|
||||||
|
ADD A,C
|
||||||
|
LD C,A
|
||||||
|
LD B,0
|
||||||
|
LD HL,tbl_addr
|
||||||
|
ADD HL,BC
|
||||||
|
ENDM
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
MACRO SET_PAGE_X new_page
|
||||||
|
LD A,(BANKTBL+new_page)
|
||||||
|
LD B,A
|
||||||
|
LD C,SLOT3
|
||||||
|
IN A,(SLOT3)
|
||||||
|
OUT (C),B
|
||||||
|
ENDM
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
; MACRO BUFFER_KEYINTER
|
; MACRO BUFFER_KEYINTER
|
||||||
; _mInfoALIGN 256,0
|
; _mInfoALIGN 256,0
|
||||||
@ -98,102 +142,68 @@
|
|||||||
; ENDM
|
; ENDM
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
|
||||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
; ;
|
||||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
; MACRO _mDSS_Version
|
||||||
; <20>Ž<EFBFBD>’ˆ’: HL, DE, IY.
|
; DB 'DSS_'
|
||||||
MACRO LOGDRV_ENTRY_FIND tbl_addr
|
; db '0'+VERS
|
||||||
LD H,0
|
; db '.'
|
||||||
ADD HL,HL
|
; db MODF/10+'0'
|
||||||
ADD HL,HL
|
; db MODF-(MODF/10)*10+'0'
|
||||||
ADD HL,HL
|
; ENDM
|
||||||
ADD HL,HL
|
; ;
|
||||||
EX DE,HL
|
|
||||||
LD IY,tbl_addr
|
|
||||||
ADD IY,DE
|
|
||||||
ENDM
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
;
|
||||||
MACRO _CALC_DEVICE_ENTRY tbl_addr
|
; MACRO C_OSTYPE
|
||||||
CP DSS_MAX_DRIVES_AMOUNT+1
|
; IF OSTYPE = DP
|
||||||
JR C,.norm
|
|
||||||
; Error!
|
|
||||||
LD A,DSS_MAX_DRIVES_AMOUNT
|
|
||||||
.norm: LD C,A
|
|
||||||
ADD A,A
|
|
||||||
ADD A,C
|
|
||||||
LD C,A
|
|
||||||
LD B,0
|
|
||||||
LD HL,tbl_addr
|
|
||||||
ADD HL,BC
|
|
||||||
ENDM
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
; C_OSNAME
|
||||||
MACRO SET_PAGE_X new_page
|
; DB "-DP [",#30+REVISION,']',0
|
||||||
LD A,(BANKTBL+new_page)
|
|
||||||
LD B,A
|
; ELSEIF OSTYPE = BETA
|
||||||
LD C,SLOT3
|
|
||||||
IN A,(SLOT3)
|
; C_OSNAME
|
||||||
OUT (C),B
|
; DB '-BETA [',#30+REVISION,']',0
|
||||||
ENDM
|
|
||||||
|
; ELSEIF OSTYPE = RC
|
||||||
|
|
||||||
|
; C_OSNAME
|
||||||
|
; DB '-RC [',#30+REVISION,']',0
|
||||||
|
|
||||||
|
; ELSEIF OSTYPE = RELEASE
|
||||||
|
|
||||||
|
; C_OSRELEASE
|
||||||
|
; ;DB "-RELEASE",0
|
||||||
|
|
||||||
|
; ELSE
|
||||||
|
|
||||||
|
; C_OSNAME
|
||||||
|
; DB "-UNKNOWN",0
|
||||||
|
|
||||||
|
; ENDIF
|
||||||
|
; ENDM
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
|
||||||
MACRO _mDSS_Version
|
|
||||||
DB 'DSS_'
|
|
||||||
db '0'+VERS
|
|
||||||
db '.'
|
|
||||||
db MODF/10+'0'
|
|
||||||
db MODF-(MODF/10)*10+'0'
|
|
||||||
ENDM
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
MACRO C_OSTYPE
|
|
||||||
IF OSTYPE = DP
|
|
||||||
|
|
||||||
C_OSNAME
|
; ;
|
||||||
DB "-DP [",#30+REVISION,']',0
|
; MACRO C_OSNAME
|
||||||
|
; DB "ESTEX",0
|
||||||
|
; ENDM
|
||||||
|
; ;
|
||||||
|
|
||||||
ELSEIF OSTYPE = BETA
|
|
||||||
|
|
||||||
C_OSNAME
|
|
||||||
DB '-BETA [',#30+REVISION,']',0
|
|
||||||
|
|
||||||
ELSEIF OSTYPE = RC
|
; ;
|
||||||
|
; MACRO C_OSRELEASE
|
||||||
|
; DB "Estex DSS",0
|
||||||
|
; ENDM
|
||||||
|
; ;
|
||||||
|
|
||||||
C_OSNAME
|
|
||||||
DB '-RC [',#30+REVISION,']',0
|
|
||||||
|
|
||||||
ELSEIF OSTYPE = RELEASE
|
|
||||||
|
|
||||||
C_OSRELEASE
|
|
||||||
;DB "-RELEASE",0
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
|
|
||||||
C_OSNAME
|
|
||||||
DB "-UNKNOWN",0
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
ENDM
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
MACRO C_OSNAME
|
|
||||||
DB "ESTEX",0
|
|
||||||
ENDM
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
|
||||||
MACRO C_OSRELEASE
|
|
||||||
DB "Estex DSS",0
|
|
||||||
ENDM
|
|
||||||
;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
;
|
;
|
||||||
; MACRO _mSavePath force
|
; MACRO _mSavePath force
|
||||||
; IF SAVE_PATH_MACRO
|
; IF SAVE_PATH_MACRO
|
||||||
|
|||||||
305
DSS/FS/FAT.asm
305
DSS/FS/FAT.asm
@ -296,156 +296,151 @@ SEARCH:
|
|||||||
; FIND "MASKAREA" IN DIRECTORY
|
; FIND "MASKAREA" IN DIRECTORY
|
||||||
; [x] fat32 ;!TEST
|
; [x] fat32 ;!TEST
|
||||||
; ¢ë室: IY:DE - cluster number
|
; ¢ë室: IY:DE - cluster number
|
||||||
FINDDIR:
|
FINDDIR: SET_PAGE_X DIRPAGE
|
||||||
SET_PAGE_X DIRPAGE
|
;
|
||||||
;
|
PUSH AF
|
||||||
PUSH AF
|
LD IX,DIRPAGE.buffer
|
||||||
LD IX,DIRPAGE.buffer
|
.big_loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||||
.big_loop:
|
OR A
|
||||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
JR Z,.error
|
||||||
OR A
|
CP #E5
|
||||||
JR Z,.error
|
JR Z,.next_step
|
||||||
CP #E5
|
LD A,(IX + FAT_DIRECTORY_RECORD.ATTRIBUT)
|
||||||
JR Z,.next_step
|
AND FAT_ATTR.DIRECTORY
|
||||||
LD A,(IX + FAT_DIRECTORY_RECORD.ATTRIBUT)
|
JR Z,.next_step
|
||||||
AND FAT_ATTR.DIRECTORY
|
LD HL,MASKARE
|
||||||
JR Z,.next_step
|
LD D,XH
|
||||||
LD HL,MASKARE
|
LD E,XL
|
||||||
LD D,XH
|
EX DE,HL
|
||||||
LD E,XL
|
LD B,11 ;!HARDCODE
|
||||||
EX DE,HL
|
.loop: LD A,(DE)
|
||||||
LD B,11 ;!HARDCODE
|
CP "?"
|
||||||
.loop: LD A,(DE)
|
JR Z,.compared
|
||||||
CP "?"
|
CP (HL)
|
||||||
JR Z,.compared
|
JR NZ,.next_step
|
||||||
CP (HL)
|
;
|
||||||
JR NZ,.next_step
|
.compared: INC HL
|
||||||
.compared:
|
INC DE
|
||||||
INC HL
|
DJNZ .loop
|
||||||
INC DE
|
;
|
||||||
DJNZ .loop
|
LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||||
;
|
CP "."
|
||||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
JP NZ,.ADDSPEC
|
||||||
CP "."
|
LD A,(IX + FAT_DIRECTORY_RECORD.NAME + 1)
|
||||||
JP NZ,.ADDSPEC
|
CP "."
|
||||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME + 1)
|
JP NZ,.ITs_DIR
|
||||||
CP "."
|
LD HL,CORE_BUFFERS.WorkDirectory
|
||||||
JP NZ,.IT_DIR
|
LD D,H
|
||||||
LD HL,CORE_BUFFERS.WorkDirectory
|
LD E,L
|
||||||
LD D,H
|
INC HL
|
||||||
LD E,L
|
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
||||||
INC HL
|
XOR A
|
||||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
CPIR
|
||||||
XOR A
|
JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
||||||
CPIR
|
DEC HL ;R009
|
||||||
JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
DEC HL
|
||||||
DEC HL ;R009
|
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
||||||
DEC HL
|
LD A,'\'
|
||||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
CPDR
|
||||||
LD A,'\'
|
INC HL
|
||||||
CPDR
|
EX DE,HL
|
||||||
INC HL
|
; CF = 0
|
||||||
EX DE,HL
|
SBC HL,DE
|
||||||
; CF = 0
|
EX DE,HL
|
||||||
SBC HL,DE
|
JR NZ,.MM3
|
||||||
EX DE,HL
|
INC HL
|
||||||
JR NZ,.MM3
|
.MM3: LD (HL),0
|
||||||
INC HL
|
JP .ITs_DIR
|
||||||
.MM3: LD (HL),0
|
;
|
||||||
JP .IT_DIR
|
.next_step: LD BC,FAT_DIRECTORY_RECORD
|
||||||
;
|
ADD IX,BC
|
||||||
.next_step:
|
JR NC,.big_loop
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
;
|
||||||
ADD IX,BC
|
.error: POP AF
|
||||||
JR NC,.big_loop
|
OUT (SLOT3),A
|
||||||
;
|
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||||
.error: POP AF
|
SCF
|
||||||
OUT (SLOT3),A
|
RET
|
||||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
;
|
||||||
SCF
|
.ADDSPEC: LD HL,CORE_BUFFERS.WorkDirectory+1
|
||||||
RET
|
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH-1
|
||||||
;
|
CALL .CHECK_SLASH
|
||||||
.ADDSPEC:
|
JR C,.error
|
||||||
LD HL,CORE_BUFFERS.WorkDirectory+1
|
;R011
|
||||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH-1
|
LD A,B
|
||||||
CALL .CHECK_SLASH
|
AND A
|
||||||
JR C,.error
|
JR NZ,.nxt
|
||||||
;R011
|
LD A,C
|
||||||
LD A,B
|
CP 8+1+3 ;!HARDCODE ¨¬ï ª â «®£ + â®çª + à áè¨à¥¨¥
|
||||||
AND A
|
JR C,.error
|
||||||
JR NZ,.nxt
|
.nxt: ;
|
||||||
LD A,C
|
LD E,XL
|
||||||
CP 8+1+3 ;!HARDCODE ¨¬ï ª â «®£ + â®çª + à áè¨à¥¨¥
|
LD D,XH
|
||||||
JR C,.error
|
; [x] ®¯â¨¬¨§ æ¨ï ¯® à §¬¥àã
|
||||||
.nxt: ;
|
EX DE,HL
|
||||||
LD E,XL
|
CALL GetName
|
||||||
LD D,XH
|
EX DE,HL
|
||||||
; [x] ®¯â¨¬¨§ æ¨ï ¯® à §¬¥àã
|
;
|
||||||
EX DE,HL
|
|
||||||
CALL GetName
|
|
||||||
EX DE,HL
|
|
||||||
;
|
|
||||||
|
|
||||||
; LD BC,256*8 + ' ' ;!HARDCODE
|
; LD BC,256*8 + ' ' ;!HARDCODE
|
||||||
; .MM1: LD A,(DE)
|
; .MM1: LD A,(DE)
|
||||||
; INC DE
|
; INC DE
|
||||||
; CP C
|
; CP C
|
||||||
; JR Z,.MM2
|
; JR Z,.MM2
|
||||||
; LD (HL),A
|
; LD (HL),A
|
||||||
; INC HL
|
; INC HL
|
||||||
; .MM2 DJNZ .MM1 ;x42-40 50-55
|
; .MM2 DJNZ .MM1 ;x42-40 50-55
|
||||||
; LD A,(DE)
|
; LD A,(DE)
|
||||||
; INC DE
|
; INC DE
|
||||||
; CP C
|
; CP C
|
||||||
; JR Z,.MM3
|
; JR Z,.MM3
|
||||||
; LD (HL),"."
|
; LD (HL),"."
|
||||||
; INC HL
|
; INC HL
|
||||||
; LD (HL),A
|
; LD (HL),A
|
||||||
; INC HL
|
; INC HL
|
||||||
; LD A,(DE)
|
; LD A,(DE)
|
||||||
; INC DE
|
; INC DE
|
||||||
; CP C
|
; CP C
|
||||||
; JR Z,.MM3
|
; JR Z,.MM3
|
||||||
; LD (HL),A
|
; LD (HL),A
|
||||||
; INC HL
|
; INC HL
|
||||||
; LD A,(DE)
|
; LD A,(DE)
|
||||||
; CP C
|
; CP C
|
||||||
; JR Z,.MM3
|
; JR Z,.MM3
|
||||||
; LD (HL),A
|
; LD (HL),A
|
||||||
; .MM2_5: INC HL
|
; .MM2_5: INC HL
|
||||||
; .MM3: LD (HL),0
|
; .MM3: LD (HL),0
|
||||||
; ; JP IT_DIR
|
; ; JP IT_DIR
|
||||||
;
|
;
|
||||||
.IT_DIR:; fat32
|
.ITs_DIR: ; fat32
|
||||||
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
|
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
|
||||||
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
|
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
|
||||||
LD YH,D
|
LD YH,D
|
||||||
LD YL,E
|
LD YL,E
|
||||||
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
||||||
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.CHECK_SLASH:
|
.CHECK_SLASH: XOR A
|
||||||
XOR A
|
CPIR
|
||||||
CPIR
|
;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
||||||
;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
SCF
|
||||||
SCF
|
RET PO
|
||||||
RET PO
|
;
|
||||||
;
|
DEC HL
|
||||||
DEC HL
|
DEC HL
|
||||||
DEC HL
|
LD A,'\' ; #5C
|
||||||
LD A,'\' ; #5C
|
CP (HL)
|
||||||
CP (HL)
|
INC HL
|
||||||
INC HL
|
RET Z
|
||||||
RET Z
|
LD (HL),A
|
||||||
LD (HL),A
|
INC HL
|
||||||
INC HL
|
XOR A ; á¡à®á CF § ®¤®
|
||||||
XOR A ; á¡à®á CF § ®¤®
|
LD (HL),A
|
||||||
LD (HL),A
|
RET
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
CHECK_ROOT_CLUSTER:
|
CHECK_ROOT_CLUSTER:
|
||||||
@ -2775,6 +2770,20 @@ GET_OFFSET_IN_SECTORS:
|
|||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; [x] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb
|
||||||
|
CHECK_64kb_CLUSTER:
|
||||||
|
LD HL,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
|
||||||
|
; CF=0
|
||||||
|
ADC HL,HL
|
||||||
|
LD A,DSS_Error.sys.WRITE_PROTECT
|
||||||
|
RET NZ
|
||||||
|
CCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
FAT_MODULE_SIZE EQU $-FAT_MODULE_START
|
FAT_MODULE_SIZE EQU $-FAT_MODULE_START
|
||||||
;//MODULE: FAT
|
;//MODULE: FAT
|
||||||
;[END]
|
;[END]
|
||||||
30
DSS/FS/FS.ASM
Normal file
30
DSS/FS/FS.ASM
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; [x] fat32 ; [ ] CDFS
|
||||||
|
RD_BPB: CALL READ_BPB ; [ ] cdfs
|
||||||
|
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
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
INCLUDE "FAT.ASM"
|
||||||
|
INCLUDE "CDFS.ASM"
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
READ_BPB ; <20>à®ç¨â âì BPB ¢ SECTOR_BUFFER
|
||||||
|
|
||||||
|
*/
|
||||||
@ -1,8 +0,0 @@
|
|||||||
INCLUDE "FS/FAT.ASM"
|
|
||||||
INCLUDE "FS/CDFS.ASM"
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
READ_BPB ; <20>à®ç¨â âì BPB ¢ SECTOR_BUFFER
|
|
||||||
|
|
||||||
*/
|
|
||||||
@ -16,36 +16,35 @@
|
|||||||
;OUTPUT: DE - hhhhhmmmmmmsssss h - hour, m - min, s - sec/2
|
;OUTPUT: DE - hhhhhmmmmmmsssss h - hour, m - min, s - sec/2
|
||||||
; BC - yyyyyyymmmmddddd y - year, m - month, d - day
|
; BC - yyyyyyymmmmddddd y - year, m - month, d - day
|
||||||
; (1980-2108)
|
; (1980-2108)
|
||||||
MK_TIME:
|
MK_TIME: LD A,L
|
||||||
LD A,L
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
SLA A
|
||||||
SLA A
|
RL H
|
||||||
RL H
|
SLA A
|
||||||
SLA A
|
RL H
|
||||||
RL H
|
SLA A
|
||||||
SLA A
|
RL H
|
||||||
RL H
|
SRL B
|
||||||
SRL B
|
OR B
|
||||||
OR B
|
LD L,A
|
||||||
LD L,A
|
;
|
||||||
|
LD BC,#F844 ;(-1980)
|
||||||
LD BC,#F844 ;(-1980)
|
ADD IX,BC
|
||||||
ADD IX,BC
|
LD A,E
|
||||||
LD A,E
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
AND #F0
|
||||||
AND #F0
|
LD B,XL
|
||||||
LD B,XL
|
SLA A
|
||||||
SLA A
|
RL B
|
||||||
RL B
|
OR D
|
||||||
OR D
|
LD C,A
|
||||||
LD C,A
|
EX DE,HL
|
||||||
EX DE,HL
|
AND A
|
||||||
AND A
|
RET
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
;!TODO Procedures
|
;!TODO Procedures
|
||||||
@ -66,38 +65,37 @@ MK_TIME:
|
|||||||
; H - HOUR; L - MINUTE
|
; H - HOUR; L - MINUTE
|
||||||
; B - SECOND (0...59)
|
; B - SECOND (0...59)
|
||||||
; IX- YEAR (0...65535)
|
; IX- YEAR (0...65535)
|
||||||
RMKTIME:
|
RMKTIME: EX DE,HL
|
||||||
EX DE,HL
|
LD A,C
|
||||||
LD A,C
|
AND #1F
|
||||||
AND #1F
|
LD D,A
|
||||||
LD D,A
|
SRL B
|
||||||
SRL B
|
RR C
|
||||||
RR C
|
LD A,C
|
||||||
LD A,C
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
AND #0F
|
||||||
AND #0F
|
LD E,A
|
||||||
LD E,A
|
LD C,B
|
||||||
LD C,B
|
LD B,0
|
||||||
LD B,0
|
LD IX,1980
|
||||||
LD IX,1980
|
ADD IX,BC
|
||||||
ADD IX,BC
|
LD A,L
|
||||||
LD A,L
|
AND #1F
|
||||||
AND #1F
|
ADD A,A
|
||||||
ADD A,A
|
LD B,A
|
||||||
LD B,A
|
SRL H
|
||||||
SRL H
|
RR L
|
||||||
RR L
|
SRL H
|
||||||
SRL H
|
RR L
|
||||||
RR L
|
SRL H
|
||||||
SRL H
|
RR L
|
||||||
RR L
|
SRL L
|
||||||
SRL L
|
SRL L
|
||||||
SRL L
|
AND A
|
||||||
AND A
|
RET
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
@ -204,88 +202,59 @@ CalcDayOfWeek: LD A,D
|
|||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
; a..z -> A..Z
|
|
||||||
UPPER: CP 'a'
|
|
||||||
RET C
|
|
||||||
CP 'z' + 1
|
|
||||||
JR NC,.CheckRUS
|
|
||||||
.Dec: SUB #20
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
.CheckRUS: CP ' ' ; àãááª ï ¡ãª¢ , ª®¤ #A0
|
|
||||||
RET C
|
|
||||||
CP '¯'+1 ; àãááª ï ¡ãª¢ ¯, ª®¤ #AF + 1
|
|
||||||
JR C,.Dec
|
|
||||||
;
|
|
||||||
.BGUPPER: CP 'à' ; àãááª ï ¡ãª¢ à, ª®¤ #E0
|
|
||||||
RET C
|
|
||||||
CP 'ð' ; àãááª ï ¡ãª¢ ð, ª®¤ #F0
|
|
||||||
JR NC,.HGUPPER
|
|
||||||
SUB #50
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
.HGUPPER: CP 'ñ' ; àãááª ï ¡ãª¢ ñ, ª®¤ #F1
|
|
||||||
RET NZ
|
|
||||||
DEC A
|
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;!TODO hardware
|
;!TODO hardware
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; —⥨¥ ॣ¨áâ஢ CMOS
|
; —⥨¥ ॣ¨áâ஢ CMOS
|
||||||
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
||||||
RCMOS: LD C,BIOS.CMOS_RD
|
RCMOS: LD C,BIOS.CMOS_RD
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;JP BCD2HEX
|
;JP BCD2HEX
|
||||||
; INPUT : A - BCD
|
; INPUT : A - BCD
|
||||||
; OUTPUT: A - HEX
|
; OUTPUT: A - HEX
|
||||||
BCD2HEX:
|
BCD2HEX: LD E,A
|
||||||
LD E,A
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
AND #0F
|
||||||
AND #0F
|
LD D,A
|
||||||
LD D,A
|
ADD A,A
|
||||||
ADD A,A
|
ADD A,A
|
||||||
ADD A,A
|
ADD A,D
|
||||||
ADD A,D
|
ADD A,A
|
||||||
ADD A,A
|
LD D,A
|
||||||
LD D,A
|
LD A,E
|
||||||
LD A,E
|
AND #0F
|
||||||
AND #0F
|
ADD A,D
|
||||||
ADD A,D
|
RET
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
;!TODO hardware
|
;!TODO hardware
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ‡ ¯¨áì ॣ¨áâ஢ CMOS
|
; ‡ ¯¨áì ॣ¨áâ஢ CMOS
|
||||||
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
||||||
WCMOS: CALL HEX2BCD
|
WCMOS: CALL HEX2BCD
|
||||||
LD C,BIOS.CMOS_WR
|
LD C,BIOS.CMOS_WR
|
||||||
JP ToBIOS
|
JP ToBIOS
|
||||||
|
|
||||||
; INPUT : A - HEX
|
; INPUT : A - HEX
|
||||||
; OUTPUT: A - BCD
|
; OUTPUT: A - BCD
|
||||||
HEX2BCD:
|
HEX2BCD: LD BC,#0AFF
|
||||||
LD BC,#0AFF
|
.loop: INC C
|
||||||
.loop: INC C
|
SUB B
|
||||||
SUB B
|
JR NC,.loop
|
||||||
JR NC,.loop
|
;
|
||||||
ADD A,B
|
ADD A,B
|
||||||
LD B,A
|
LD B,A
|
||||||
LD A,C
|
LD A,C
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
AND #F0
|
AND #F0
|
||||||
OR B
|
OR B
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@ -31,26 +31,27 @@
|
|||||||
; ®¬¥à ¢¥àᨨ (0..9)
|
; ®¬¥à ¢¥àᨨ (0..9)
|
||||||
VERS EQU 1
|
VERS EQU 1
|
||||||
; ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
; ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||||
MODF EQU 71
|
MODF EQU 72
|
||||||
; ®¬¥à ¡¨«¤ (0..999)
|
; ®¬¥à ¡¨«¤ (0..999)
|
||||||
BUILD EQU lua_BUILD
|
BUILD EQU lua_BUILD
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
; Release Types
|
|
||||||
RELEASE EQU 0
|
|
||||||
RC EQU 1
|
|
||||||
BETA EQU 2
|
|
||||||
DP EQU 3
|
|
||||||
;
|
|
||||||
|
|
||||||
; Build Type
|
|
||||||
OSTYPE EQU BETA
|
|
||||||
REVISION EQU 1
|
|
||||||
;
|
|
||||||
|
|
||||||
; Current date
|
; Current date
|
||||||
DAY EQU lua_DAY
|
DAY EQU lua_DAY
|
||||||
MONTH EQU lua_MONTH
|
MONTH EQU lua_MONTH
|
||||||
YEAR EQU lua_YEAR
|
YEAR EQU lua_YEAR
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
; ; Release Types
|
||||||
|
; RELEASE EQU 0
|
||||||
|
; RC EQU 1
|
||||||
|
; BETA EQU 2
|
||||||
|
; DP EQU 3
|
||||||
|
; ;
|
||||||
|
|
||||||
|
; ; Build Type
|
||||||
|
; OSTYPE EQU BETA
|
||||||
|
; REVISION EQU 1
|
||||||
|
; ;
|
||||||
@ -1 +1 @@
|
|||||||
57
|
0
|
||||||
@ -7,8 +7,7 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥ ï â ¡«¨æ äãªæ¨© rst #10. 96 äãªæ¨©.
|
DEFINE COMPILE_UNUSED_CODE 0
|
||||||
DEFINE COMPILE_UNUSED_CODE 0
|
|
||||||
;
|
;
|
||||||
|
|
||||||
; MOUSE
|
; MOUSE
|
||||||
|
|||||||
104
DSS/first_init.asm
Normal file
104
DSS/first_init.asm
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||
|
; § âàñâáï ¯®á«¥ ¨¨æ¨ «¨§ 樨
|
||||||
|
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||
|
|
||||||
|
|
||||||
|
; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨¨æ¨ «¨§ 樨 ¤à¥á ¢ â ¡«¨æ¥ ¬¥ï¥âáï VERSION
|
||||||
|
;-----------------------------------------------------------------------;
|
||||||
|
F_START: DI
|
||||||
|
; § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||||
|
LD H,A
|
||||||
|
LD (.saveDRV),HL ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
||||||
|
;
|
||||||
|
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 C,.err_oldBIOS
|
||||||
|
;
|
||||||
|
.good: CALL DEPLOY ;íâ ¯à®æ¥¤ãà § âàñâáï ¯®á«¥ ¨á¯®«¥¨ï
|
||||||
|
RET C
|
||||||
|
CALL KEYBOARD_INIT
|
||||||
|
CALL PRINT_INIT
|
||||||
|
LD C,Dss.Mouse.Init
|
||||||
|
RST ToDSS.Mouse
|
||||||
|
LD A,(VMODE)
|
||||||
|
LD C,Dss.Mouse.SetVideoMode
|
||||||
|
RST ToDSS.Mouse
|
||||||
|
;
|
||||||
|
LD C,Dss.DRV.Init
|
||||||
|
RST ToDSS.DRV
|
||||||
|
LD (LDRIVE),A
|
||||||
|
; § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||||
|
.saveDRV+1: LD HL,0 ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
||||||
|
CALL BOOTDSK.SET
|
||||||
|
RET C
|
||||||
|
;
|
||||||
|
EI
|
||||||
|
;Set new address fn. VERSION
|
||||||
|
LD HL,DSS_API_TABLE
|
||||||
|
LD (HL),low VERSION
|
||||||
|
INC H
|
||||||
|
LD (HL),high VERSION
|
||||||
|
JP CLEAR_BUFFER_AND_INIT_PROC
|
||||||
|
;
|
||||||
|
.err_oldBIOS: IN A,(SLOT0)
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD HL,.err_oldBIOS_message + SLOT3.MEM_ADDR
|
||||||
|
CALL PCHARS
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
.err_oldBIOS_message:
|
||||||
|
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
|
||||||
|
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
|
||||||
|
RST ToBIOS
|
||||||
|
RET C
|
||||||
|
LD C,A
|
||||||
|
;
|
||||||
|
IN A,(SLOT3)
|
||||||
|
PUSH AF
|
||||||
|
IN A,(SLOT0)
|
||||||
|
LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A ;!TEST
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,C
|
||||||
|
LD HL,BANKTBL + #C000
|
||||||
|
LD C,BIOS.GetMemBlkPages
|
||||||
|
RST ToBIOS
|
||||||
|
; ¤®«¦ ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
|
||||||
|
; § ªàë¢ èª¨ #FF ¯®áâ ¢¨âì áâà ¨æã COREPAGE
|
||||||
|
LD HL,BANKTBL + COREPAGE
|
||||||
|
IN A,(SLOT0)
|
||||||
|
LD (HL),A
|
||||||
|
; ¤«ï API ¤à ©¢¥à ¬ë誨
|
||||||
|
LD (MOUSE_HANDLER.CorePage),A
|
||||||
|
LD A,(BANKTBL + DRVPAGE)
|
||||||
|
LD (RST_0x30.drv_page),A
|
||||||
|
;
|
||||||
|
POP AF
|
||||||
|
OUT (SLOT3),A
|
||||||
|
SET_PAGE_X DRVPAGE
|
||||||
|
PUSH AF
|
||||||
|
;
|
||||||
|
LD HL,DRV_CONTENT
|
||||||
|
LD DE,#C000
|
||||||
|
LD BC,DRV_CONTENT.SIZE
|
||||||
|
LDIR
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD (DRV_PG_NUMBER),A
|
||||||
|
POP AF
|
||||||
|
OUT (SLOT3),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
;-----------------------------------------------------------------------;
|
||||||
Loading…
Reference in New Issue
Block a user