mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
prepare
This commit is contained in:
parent
49af2b4266
commit
e6aa5aa304
@ -1,6 +1,7 @@
|
||||
; HL - BUFFER ADDRESS
|
||||
; DE - BLOCK SIZE
|
||||
; A - FM
|
||||
; [ ] CDFS
|
||||
READ: LD (.R_POINT),HL
|
||||
LD (.S_POINT),HL
|
||||
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"
|
||||
; 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
|
||||
GetName: LD BC,#08FF ;!HARDCODE ¤«¨ ¨¬¥¨ + áçñâ稪
|
||||
LD A,' '
|
||||
@ -59,7 +8,7 @@ GetName: LD BC,#08FF ;!HARDCODE
|
||||
JR Z,.skip
|
||||
LDI
|
||||
DJNZ .loop
|
||||
JP .extension
|
||||
JR .extension
|
||||
;
|
||||
.skip: LD C,B
|
||||
LD B,0
|
||||
@ -91,48 +40,43 @@ GetName: LD BC,#08FF ;!HARDCODE
|
||||
; ¢å®¤: hl=áâப ¨¬¥¨
|
||||
; ¢ë室: (TMPNAME)
|
||||
SetPath_GetName:
|
||||
; !TEST
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
DEC HL
|
||||
CP ':'
|
||||
JR NZ,.dir_loop
|
||||
|
||||
LD A,(HL)
|
||||
CP 'a'
|
||||
JR C,.next
|
||||
CP 'z'+1
|
||||
JR NC,.next
|
||||
SUB %0010'0000
|
||||
.next: SUB 'A'
|
||||
INC HL
|
||||
INC HL
|
||||
PUSH HL
|
||||
CALL CHDISK
|
||||
;CALL OPENDSK
|
||||
POP HL
|
||||
RET C
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR Z,.done
|
||||
CP ' ' ;
|
||||
JR Z,.done
|
||||
CP '\' ;
|
||||
SCF
|
||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||
RET NZ
|
||||
INC HL
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
DEC HL
|
||||
CP ':'
|
||||
JR NZ,.dir_loop
|
||||
;
|
||||
LD A,(HL)
|
||||
CP 'a'
|
||||
JR C,.next
|
||||
CP 'z'+1
|
||||
JR NC,.next
|
||||
SUB %0010'0000
|
||||
.next: SUB 'A'
|
||||
INC HL
|
||||
INC HL
|
||||
PUSH HL
|
||||
CALL CHDISK
|
||||
POP HL
|
||||
RET C
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR Z,.done
|
||||
CP ' '
|
||||
JR Z,.done
|
||||
CP '\' ;
|
||||
SCF
|
||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||
RET NZ
|
||||
INC HL
|
||||
;
|
||||
.dir_loop: LD DE,TMPNAME
|
||||
LD BC,#0DFF
|
||||
.loop: LD A,(HL)
|
||||
INC HL
|
||||
CP '\' ;
|
||||
CP '\' ;
|
||||
JR Z,.DIR_NAME
|
||||
; AND A
|
||||
; JR Z,.DIR_NAME
|
||||
;CP ':'
|
||||
;JR Z,.DRV_NAME
|
||||
;
|
||||
LD (DE),A
|
||||
INC DE
|
||||
CP ' '+1
|
||||
@ -155,25 +99,7 @@ SetPath_GetName:
|
||||
POP HL
|
||||
RET C
|
||||
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 ä®à¬ â
|
||||
TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0 ;!FIXIT ª ¡ãä¥à ¬
|
||||
;----------------------------------------------------------------------;
|
||||
@ -210,7 +136,7 @@ OPENDSK: ;!TEST DRV.Open
|
||||
LD A,B
|
||||
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
|
||||
;
|
||||
CALL RD_BPB
|
||||
CALL RD_BPB ; [ ] cdfs
|
||||
;[x] 29/02/2024 fix "open drive error"
|
||||
POP DE
|
||||
JR C,.error_bpb
|
||||
@ -292,97 +218,97 @@ OPENDSK: ;!TEST DRV.Open
|
||||
; DE - 11 bytes filename
|
||||
; RET: C=2 FILE WITHOUT EXTENTION
|
||||
; C=1 FILE WITH EXTENTION
|
||||
MASK: LD HL,TMPNAME
|
||||
.name: LD DE,MASKARE
|
||||
.custom: PUSH HL
|
||||
PUSH DE
|
||||
LD H,D
|
||||
LD L,E
|
||||
INC DE
|
||||
LD (HL),' '
|
||||
LD BC,10 ;!HARDCODE = size (FileName + Extension - 1)
|
||||
LDIR
|
||||
POP DE
|
||||
POP HL
|
||||
LD A,(HL)
|
||||
CP '.' ;R007
|
||||
SCF ;R007
|
||||
JR Z,.MASKB ;R007
|
||||
CP ' '+1
|
||||
.MASKB: LD A,DSS_Error.sys.INVALID_NAME
|
||||
RET C
|
||||
LD BC,#0902 ; B - áç¥â稪
|
||||
.MASK1: LD A,(HL)
|
||||
CP ' '+1
|
||||
CCF
|
||||
RET NC
|
||||
;
|
||||
CP '*'
|
||||
JR Z,.MASK3
|
||||
CP '.'
|
||||
JR Z,.MASK5
|
||||
CP '"'
|
||||
JR Z,.MASK_ERR
|
||||
CP '+'
|
||||
JR Z,.MASK_ERR
|
||||
CP ','
|
||||
JR Z,.MASK_ERR
|
||||
CP '/'
|
||||
JR Z,.MASK_ERR
|
||||
CP ':'
|
||||
JR Z,.MASK_ERR
|
||||
CP ';'
|
||||
JR Z,.MASK_ERR
|
||||
CP '<'
|
||||
JR Z,.MASK_ERR
|
||||
CP '='
|
||||
JR Z,.MASK_ERR
|
||||
CP '>'
|
||||
JR Z,.MASK_ERR
|
||||
CP '['
|
||||
JR Z,.MASK_ERR
|
||||
CP '\'
|
||||
JR Z,.MASK_ERR
|
||||
CP ']'
|
||||
JR Z,.MASK_ERR
|
||||
CP '|'
|
||||
JR Z,.MASK_ERR
|
||||
CALL UPPER ; a..z -> A..Z
|
||||
.MASK2: LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .MASK1
|
||||
.MASK_ERR:
|
||||
LD A,DSS_Error.sys.INVALID_NAME
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.MASK3: LD A,'?'
|
||||
INC HL
|
||||
DJNZ .MASK6
|
||||
JR .MASK_ERR
|
||||
;
|
||||
.MASK6: LD (DE),A
|
||||
INC DE
|
||||
DJNZ .MASK6
|
||||
LD B,1
|
||||
JR .MASK1
|
||||
;
|
||||
.MASK5: LD A,' '
|
||||
INC HL
|
||||
DJNZ .MASK4
|
||||
LD B,4
|
||||
DEC C
|
||||
JR NZ,.MASK1
|
||||
JR .MASK_ERR
|
||||
;
|
||||
.MASK4: LD (DE),A
|
||||
INC DE
|
||||
DJNZ .MASK4
|
||||
LD B,4
|
||||
DEC C
|
||||
JR NZ,.MASK1
|
||||
JR .MASK_ERR
|
||||
MASK: LD HL,TMPNAME
|
||||
.name: LD DE,MASKARE
|
||||
.custom: PUSH HL
|
||||
PUSH DE
|
||||
LD H,D
|
||||
LD L,E
|
||||
INC DE
|
||||
LD (HL),' '
|
||||
LD BC,10 ;!HARDCODE = size (FileName + Extension - 1)
|
||||
LDIR
|
||||
POP DE
|
||||
POP HL
|
||||
LD A,(HL)
|
||||
CP '.' ;R007
|
||||
SCF ;R007
|
||||
JR Z,.MASKB ;R007
|
||||
CP ' '+1
|
||||
.MASKB: LD A,DSS_Error.sys.INVALID_NAME
|
||||
RET C
|
||||
LD BC,#0902 ; B - áç¥â稪
|
||||
.MASK1: LD A,(HL)
|
||||
CP ' '+1
|
||||
CCF
|
||||
RET NC
|
||||
;
|
||||
CP '*'
|
||||
JR Z,.MASK3
|
||||
CP '.'
|
||||
JR Z,.MASK5
|
||||
CP '"'
|
||||
JR Z,.MASK_ERR
|
||||
CP '+'
|
||||
JR Z,.MASK_ERR
|
||||
CP ','
|
||||
JR Z,.MASK_ERR
|
||||
CP '/'
|
||||
JR Z,.MASK_ERR
|
||||
CP ':'
|
||||
JR Z,.MASK_ERR
|
||||
CP ';'
|
||||
JR Z,.MASK_ERR
|
||||
CP '<'
|
||||
JR Z,.MASK_ERR
|
||||
CP '='
|
||||
JR Z,.MASK_ERR
|
||||
CP '>'
|
||||
JR Z,.MASK_ERR
|
||||
CP '['
|
||||
JR Z,.MASK_ERR
|
||||
CP '\'
|
||||
JR Z,.MASK_ERR
|
||||
CP ']'
|
||||
JR Z,.MASK_ERR
|
||||
CP '|'
|
||||
JR Z,.MASK_ERR
|
||||
CALL UPPER ; a..z -> A..Z
|
||||
.MASK2: LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .MASK1
|
||||
;
|
||||
.MASK_ERR: LD A,DSS_Error.sys.INVALID_NAME
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.MASK3: LD A,'?'
|
||||
INC HL
|
||||
DJNZ .MASK6
|
||||
JR .MASK_ERR
|
||||
;
|
||||
.MASK6: LD (DE),A
|
||||
INC DE
|
||||
DJNZ .MASK6
|
||||
LD B,1
|
||||
JR .MASK1
|
||||
;
|
||||
.MASK5: LD A,' '
|
||||
INC HL
|
||||
DJNZ .MASK4
|
||||
LD B,4
|
||||
DEC C
|
||||
JR NZ,.MASK1
|
||||
JR .MASK_ERR
|
||||
;
|
||||
.MASK4: LD (DE),A
|
||||
INC DE
|
||||
DJNZ .MASK4
|
||||
LD B,4
|
||||
DEC C
|
||||
JR NZ,.MASK1
|
||||
JR .MASK_ERR
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
@ -473,14 +399,13 @@ DIR_PATH_CHECK: LD A,(HL)
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
CHECK_NAME:
|
||||
LD HL,MASKARE
|
||||
.custom: LD BC,11 ;!HARDCODE
|
||||
LD A,"?"
|
||||
CPIR
|
||||
LD A,DSS_Error.sys.INVALID_NAME
|
||||
SCF
|
||||
RET
|
||||
CHECK_NAME: LD HL,MASKARE
|
||||
.custom: LD BC,11 ;!HARDCODE
|
||||
LD A,"?"
|
||||
CPIR
|
||||
LD A,DSS_Error.sys.INVALID_NAME
|
||||
SCF
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
@ -579,37 +504,43 @@ GET_FM: LD B,FMCOUNT
|
||||
;FP COMPARE
|
||||
; CY - FILE POINTER > SIZE
|
||||
; NC - FILE POINTER < SIZE
|
||||
MOVE_CP:
|
||||
LD L,(IY + _sFM.FS_REC.F_SIZE)
|
||||
LD H,(IY + _sFM.FS_REC.F_SIZE+1)
|
||||
LD E,(IY + _sFM.F_POSITION)
|
||||
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
|
||||
;
|
||||
MOVE_CP: LD L,(IY + _sFM.FS_REC.F_SIZE)
|
||||
LD H,(IY + _sFM.FS_REC.F_SIZE+1)
|
||||
LD E,(IY + _sFM.F_POSITION)
|
||||
LD D,(IY + _sFM.F_POSITION+1)
|
||||
AND A
|
||||
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
|
||||
SCF
|
||||
.HGUPPER: CP 'ñ' ; àãááª ï ¡ãª¢ ñ, ª®¤ #F1
|
||||
RET NZ
|
||||
DEC A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
789
DSS/DSS-MAIN.ASM
789
DSS/DSS-MAIN.ASM
@ -1,162 +1,143 @@
|
||||
|
||||
;[BEGIN]
|
||||
;//MODULE: DOS-MAIN AUTHOR: Denis Parinov
|
||||
;//CREATE: A LONG TIME AGO :)
|
||||
;---------------------------------------------------------------
|
||||
;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'
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;[ ] 㢥«¨ç¨âì ¤«¨ã PATH ¨ áâப¨ BAT
|
||||
;[ ] ¯ãâì ⥪ã饣® ª â «®£ ¢ DIR ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ® ¤«¨¥¥ 256 ¡ ©â®¢
|
||||
;[ ] ¯ãâì ¢ ¯à¨£« 襨¨ ª®á®«¨ ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ¯ãâì ¤«¨¥¥ 256 ¡ ©â®¢
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
;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
|
||||
; 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
|
||||
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'
|
||||
|
||||
|
||||
;
|
||||
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||||
ORG 0
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[CLOSE TASK]> ;
|
||||
RST_0x00: JP RETFAR ; ;EXECUTE.ASM R12
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
ORG 0
|
||||
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[BIOS API]> ;
|
||||
_mInfoBLOCK 8-$,#FF ;
|
||||
RST_0x08: PUSH AF ;
|
||||
LD A,SYS_PORT.BIOS ;
|
||||
OUT (SYS_PORT.ON),A ;
|
||||
POP AF ;
|
||||
RET ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
;CLOSE TASK
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RST_0x00: JP RETFAR ;EXECUTE.ASM
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[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 ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
;BIOS API
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
_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
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
;NOT USED
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
_mInfoBLOCK #20-$,#FF
|
||||
RST_0x20: JP RST_20
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RST_20:
|
||||
RST_28:
|
||||
NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||
SCF
|
||||
RET
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[NOT USED]> ;
|
||||
_mInfoBLOCK #28-$,#FF ;
|
||||
RST_0x28: JP RST_28 ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[MOUSE API]> ;
|
||||
_mInfoBLOCK #30-$,#FF ;
|
||||
|
||||
;NOT USED
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
_mInfoBLOCK #28-$,#FF
|
||||
RST_0x28: JP RST_28
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
;MOUSE API
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
_mInfoBLOCK #30-$,#FF
|
||||
RST_0x30: PUSH AF
|
||||
.drv_page+1: LD A,#FF
|
||||
OUT (SLOT0),A
|
||||
POP AF
|
||||
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
|
||||
EI
|
||||
RETI
|
||||
;
|
||||
; ¢ë室 ¨§ ®¡à ¡®â稪 ¢ DRV-MAIN.ASM
|
||||
.Portal: PUSH AF
|
||||
LD A,(RST_0x30.drv_page)
|
||||
OUT (SLOT0),A
|
||||
;POP AF
|
||||
PUSH HL
|
||||
LD HL,(RST_38_IM1+1)
|
||||
XOR A
|
||||
CP H
|
||||
JR NZ,.error
|
||||
LD A,low .Handler
|
||||
CP L
|
||||
JR NZ,.error
|
||||
; ¢å®¤ ¢ ®¡à ¡®â稪 ¨§ DRV-MAIN.ASM
|
||||
; ¥á«¨ ¯à¨«®¦¥¨¥ ¨á¯®«ì§ã¥â ¯¥à¥å¢ â IM 1, â® ¨£®à ¯à¥àë¢ ¨ï ¨§ DRV-MAIN.ASM
|
||||
PUSH HL
|
||||
LD HL,(RST_38_IM1+1)
|
||||
XOR A
|
||||
CP H
|
||||
JR NZ,.error
|
||||
;
|
||||
LD A,low .Handler
|
||||
CP L
|
||||
JR NZ,.error
|
||||
;
|
||||
POP HL
|
||||
POP AF
|
||||
CALL INTx38_Handler
|
||||
@ -165,113 +146,71 @@ RST_38_IM1: JP .Handler
|
||||
.error: POP HL
|
||||
POP AF
|
||||
JR .Portal
|
||||
;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
;NMI: RETN
|
||||
;
|
||||
|
||||
;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
; <[ NMI ]> ;
|
||||
_mInfoBLOCK #66-$,#FF ;
|
||||
NMI_0x66: RETN ;JP NMI ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
_mInfoBLOCK #66-$,#FF
|
||||
NMI_0x66: RETN
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
;
|
||||
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.
|
||||
;BootSector _sBOOT_SECTOR_PARAMS ,{ "DSS_","0"+VERS,".",MODF/10+"0",MODF-(MODF/10)*10+"0" }
|
||||
; end boot sector
|
||||
;R01
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RST_10: PUSH HL
|
||||
LD L,C
|
||||
LD H,high DSS_API_TABLE
|
||||
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 BUFFERS]------;
|
||||
;R07 ;R11
|
||||
XOR A
|
||||
LD HL,CLEAR_ZONE.start
|
||||
LD DE,CLEAR_ZONE.start+1
|
||||
LD BC,CLEAR_ZONE.size-1
|
||||
LD (HL),A
|
||||
LDIR
|
||||
LD HL,':'*256 + 'X'
|
||||
LD (CORE_BUFFERS.CurrentPath),HL
|
||||
LD A,'\' ;
|
||||
LD (CORE_BUFFERS.CurrentDirectory),A
|
||||
LD (CORE_BUFFERS.WorkDirectory),A
|
||||
;
|
||||
LD A,#FF
|
||||
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
|
||||
;
|
||||
;R07 ;R11
|
||||
;R11
|
||||
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
|
||||
|
||||
XOR A
|
||||
LD HL,CLEAR_ZONE.start
|
||||
LD DE,CLEAR_ZONE.start+1
|
||||
LD BC,CLEAR_ZONE.size-1
|
||||
LD (HL),A
|
||||
LDIR
|
||||
LD HL,':'*256 + 'X'
|
||||
LD (CORE_BUFFERS.CurrentPath),HL
|
||||
LD A,'\' ;
|
||||
LD (CORE_BUFFERS.CurrentDirectory),A
|
||||
LD (CORE_BUFFERS.WorkDirectory),A
|
||||
LD A,#FF
|
||||
LD (CORE_BUFFERS.FS_Buffer.DRIVE),A
|
||||
LD HL,CORE_BUFFERS.FM_BUF
|
||||
LD (HL),'.'
|
||||
;INIT ENVIRONMENT
|
||||
CALL INITENV
|
||||
CALL SETUP_CURSORS
|
||||
JP VERSION
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
INTx38_Handler: PUSH AF
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
@ -287,10 +226,7 @@ INTx38_Handler: PUSH AF
|
||||
CALL KEYSCAN
|
||||
LD C,Dss.Mouse.GetPackets
|
||||
RST ToDSS.Mouse
|
||||
;CALL M_INT
|
||||
; IFN CLASSIC_CURSOR
|
||||
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à ;!!!!! VASIL
|
||||
; ENDIF
|
||||
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à
|
||||
POP IY
|
||||
POP IX
|
||||
POP HL
|
||||
@ -304,67 +240,44 @@ INTx38_Handler: PUSH AF
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
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
|
||||
;------------------------------------------------------------------------------------------------------------------------;
|
||||
GO_ZERO EQU #0000
|
||||
;FUNCTION ADDRESS ARRAY
|
||||
DSS_API_TABLE: ;DS 512 ;,0
|
||||
DSS_API_TABLE:
|
||||
;...............................................[LOW ADDRESS ]:
|
||||
; 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 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 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 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 ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
|
||||
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
|
||||
DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F
|
||||
|
||||
;[ ] R09
|
||||
.low_short EQU $ - DSS_API_TABLE
|
||||
IFN SHORT_RSTx10_TABLE
|
||||
; 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 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 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 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 ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
|
||||
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
|
||||
DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT, 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
|
||||
;
|
||||
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
|
||||
EDUP
|
||||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 24 F0..F9
|
||||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; END ; 25 FA..FF
|
||||
DB low 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 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
|
||||
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 ; 14 8C..95
|
||||
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 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 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
|
||||
|
||||
_mInfoBLOCK DSS_API_TABLE+#100 - $,0
|
||||
;[ ] R09
|
||||
ENDIF
|
||||
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
|
||||
;...............................................[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 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 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 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
|
||||
;
|
||||
DB high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT, high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high NOPS, high NOPS, high NOPS, high NOPS, high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO
|
||||
DUP 13
|
||||
DB high GO_ZERO, high GO_ZERO, high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO
|
||||
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 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
|
||||
; 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 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)
|
||||
; CF=0
|
||||
ADC HL,HL
|
||||
LD A,DSS_Error.sys.WRITE_PROTECT
|
||||
RET NZ
|
||||
CCF
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
;!TODO § ¬¥¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ¢ë§®¢ë ¡¨®á
|
||||
INCLUDE "KEYINTER.ASM"
|
||||
INCLUDE "API.ASM"
|
||||
INCLUDE "DOS_FS.ASM"
|
||||
INCLUDE "Procedures.asm"
|
||||
INCLUDE "FS/FS.asm"
|
||||
;INCLUDE "drivers/drv_to_sys_errors.asm" ; !TODO
|
||||
|
||||
|
||||
|
||||
|
||||
;!FIXIT ª ¡ãä¥à ¬
|
||||
@ -423,40 +327,21 @@ CHECK_64kb_CLUSTER:
|
||||
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE
|
||||
HANDBUF: BLOCK HANDBUF.SIZE,0
|
||||
;
|
||||
; ; FAT_DIRECTORY_RECORD ; !HARDCODE
|
||||
|
||||
;!FIXIT ª ¡ãä¥à ¬
|
||||
MASKARE: BLOCK 8,0 ; ¨¬ï ä ©«
|
||||
BLOCK 3,0 ; à áè.
|
||||
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 < < < < < < < < < < < < < < < <
|
||||
;
|
||||
;
|
||||
CLEAR_ZONE.start EQU $
|
||||
|
||||
MODULE CORE_BUFFERS
|
||||
CLEAR_ZONE.start EQU $
|
||||
MODULE CORE_BUFFERS
|
||||
BUFFERSplace _sBuffers=$
|
||||
FM_BUF _sFM = BUFFERSplace.FileManipulator
|
||||
.Size EQU _sFM
|
||||
@ -465,8 +350,8 @@ FS_Buffer _sFS_Buffer = BUFFERSplace.FS_Buffer
|
||||
EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header
|
||||
XSTACK _sStack = BUFFERSplace.Stack
|
||||
.Spoint EQU XSTACK + _sStack
|
||||
BUFFER EQU BUFFERSplace.Buffer
|
||||
SECTOR_BUFFER EQU BUFFER ;!TODO ®â¤¥«¨âì SECTOR_BUFFER ®â BUFFER
|
||||
BUFFER EQU BUFFERSplace.Buffer
|
||||
SECTOR_BUFFER EQU BUFFER ;!TODO ®â¤¥«¨âì SECTOR_BUFFER ®â BUFFER
|
||||
MemoryTable EQU BUFFERSplace.MemoryTable
|
||||
CurrentPath EQU BUFFERSplace.CurrentPath
|
||||
CurrentDirectory EQU BUFFERSplace.CurrentDirectory
|
||||
@ -474,19 +359,12 @@ CurrentDirectory EQU BUFFERSplace.CurrentDirectory
|
||||
WorkDirectory EQU BUFFERSplace.WorkDirectory
|
||||
.DEPTH EQU DIRECTORY_PATH_LENGTH
|
||||
ENDMODULE
|
||||
;
|
||||
; 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
|
||||
|
||||
|
||||
CLEAR_ZONE.size EQU _sBuffers
|
||||
ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||||
|
||||
|
||||
|
||||
|
||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
|
||||
DISPLAY "CLEAR_ZONE.Size ", /H, CLEAR_ZONE.size
|
||||
@ -519,217 +397,36 @@ CLEAR_ZONE.size EQU _sBuffers
|
||||
EXPORT CORE_BUFFERS.MemoryTable
|
||||
EXPORT CORE_BUFFERS.CurrentDirectory
|
||||
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 < < < < < < < < < < < < < < < <
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
; § âàñâáï ¯®á«¥ ¨¨æ¨ «¨§ 樨
|
||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
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
|
||||
ASSERT "Warning! ENVVALUE != BUFFER"
|
||||
//BLOCK 1000,0
|
||||
ASSERT "Warning! ENVVALUE != BUFFER"
|
||||
ENDIF
|
||||
|
||||
;--- --- --- --- [Build version] --- --- --- ---;
|
||||
; C_OSTYPE
|
||||
;--- --- --- --- --- --- --- --- --- --- --- ---;
|
||||
|
||||
DISPLAY "FAT MODULE SIZE: ",/A,FAT_MODULE_SIZE
|
||||
DISPLAY "DEPLOY end address: ",/H,$
|
||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
|
||||
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 $
|
||||
|
||||
|
||||
DISPLAY "END ADDRESS: ",/H,BIN_END_ADDRESS
|
||||
DISPLAY "Memory leacks when > ",/H, #4000+SUBLOAD_SIZE*512
|
||||
ASSERT $ < (#4001+SUBLOAD_SIZE*512),'-> Memory leack!!!';
|
||||
ASSERT DRV_CONTENT.SIZE < #4001,'-> Drivers code size > #4000!!!';
|
||||
;[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
|
||||
;[END]
|
||||
@ -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
|
||||
; _mInfoALIGN 256,0
|
||||
@ -98,102 +142,68 @@
|
||||
; ENDM
|
||||
;
|
||||
|
||||
;
|
||||
; ‚•Ž„: 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 _mDSS_Version
|
||||
; DB 'DSS_'
|
||||
; db '0'+VERS
|
||||
; db '.'
|
||||
; db MODF/10+'0'
|
||||
; db MODF-(MODF/10)*10+'0'
|
||||
; 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 C_OSTYPE
|
||||
; IF OSTYPE = DP
|
||||
|
||||
;
|
||||
MACRO SET_PAGE_X new_page
|
||||
LD A,(BANKTBL+new_page)
|
||||
LD B,A
|
||||
LD C,SLOT3
|
||||
IN A,(SLOT3)
|
||||
OUT (C),B
|
||||
ENDM
|
||||
; C_OSNAME
|
||||
; DB "-DP [",#30+REVISION,']',0
|
||||
|
||||
; ELSEIF OSTYPE = BETA
|
||||
|
||||
; C_OSNAME
|
||||
; DB '-BETA [',#30+REVISION,']',0
|
||||
|
||||
; 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
|
||||
; IF SAVE_PATH_MACRO
|
||||
|
||||
305
DSS/FS/FAT.asm
305
DSS/FS/FAT.asm
@ -296,156 +296,151 @@ SEARCH:
|
||||
; FIND "MASKAREA" IN DIRECTORY
|
||||
; [x] fat32 ;!TEST
|
||||
; ¢ë室: IY:DE - cluster number
|
||||
FINDDIR:
|
||||
SET_PAGE_X DIRPAGE
|
||||
;
|
||||
PUSH AF
|
||||
LD IX,DIRPAGE.buffer
|
||||
.big_loop:
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
OR A
|
||||
JR Z,.error
|
||||
CP #E5
|
||||
JR Z,.next_step
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.ATTRIBUT)
|
||||
AND FAT_ATTR.DIRECTORY
|
||||
JR Z,.next_step
|
||||
LD HL,MASKARE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
EX DE,HL
|
||||
LD B,11 ;!HARDCODE
|
||||
.loop: LD A,(DE)
|
||||
CP "?"
|
||||
JR Z,.compared
|
||||
CP (HL)
|
||||
JR NZ,.next_step
|
||||
.compared:
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .loop
|
||||
;
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
CP "."
|
||||
JP NZ,.ADDSPEC
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME + 1)
|
||||
CP "."
|
||||
JP NZ,.IT_DIR
|
||||
LD HL,CORE_BUFFERS.WorkDirectory
|
||||
LD D,H
|
||||
LD E,L
|
||||
INC HL
|
||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
||||
XOR A
|
||||
CPIR
|
||||
JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
||||
DEC HL ;R009
|
||||
DEC HL
|
||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
||||
LD A,'\'
|
||||
CPDR
|
||||
INC HL
|
||||
EX DE,HL
|
||||
; CF = 0
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
JR NZ,.MM3
|
||||
INC HL
|
||||
.MM3: LD (HL),0
|
||||
JP .IT_DIR
|
||||
;
|
||||
.next_step:
|
||||
LD BC,FAT_DIRECTORY_RECORD
|
||||
ADD IX,BC
|
||||
JR NC,.big_loop
|
||||
;
|
||||
.error: POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.ADDSPEC:
|
||||
LD HL,CORE_BUFFERS.WorkDirectory+1
|
||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH-1
|
||||
CALL .CHECK_SLASH
|
||||
JR C,.error
|
||||
;R011
|
||||
LD A,B
|
||||
AND A
|
||||
JR NZ,.nxt
|
||||
LD A,C
|
||||
CP 8+1+3 ;!HARDCODE ¨¬ï ª â «®£ + â®çª + à áè¨à¥¨¥
|
||||
JR C,.error
|
||||
.nxt: ;
|
||||
LD E,XL
|
||||
LD D,XH
|
||||
; [x] ®¯â¨¬¨§ æ¨ï ¯® à §¬¥àã
|
||||
EX DE,HL
|
||||
CALL GetName
|
||||
EX DE,HL
|
||||
;
|
||||
FINDDIR: SET_PAGE_X DIRPAGE
|
||||
;
|
||||
PUSH AF
|
||||
LD IX,DIRPAGE.buffer
|
||||
.big_loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
OR A
|
||||
JR Z,.error
|
||||
CP #E5
|
||||
JR Z,.next_step
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.ATTRIBUT)
|
||||
AND FAT_ATTR.DIRECTORY
|
||||
JR Z,.next_step
|
||||
LD HL,MASKARE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
EX DE,HL
|
||||
LD B,11 ;!HARDCODE
|
||||
.loop: LD A,(DE)
|
||||
CP "?"
|
||||
JR Z,.compared
|
||||
CP (HL)
|
||||
JR NZ,.next_step
|
||||
;
|
||||
.compared: INC HL
|
||||
INC DE
|
||||
DJNZ .loop
|
||||
;
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
CP "."
|
||||
JP NZ,.ADDSPEC
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME + 1)
|
||||
CP "."
|
||||
JP NZ,.ITs_DIR
|
||||
LD HL,CORE_BUFFERS.WorkDirectory
|
||||
LD D,H
|
||||
LD E,L
|
||||
INC HL
|
||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
||||
XOR A
|
||||
CPIR
|
||||
JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
||||
DEC HL ;R009
|
||||
DEC HL
|
||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
|
||||
LD A,'\'
|
||||
CPDR
|
||||
INC HL
|
||||
EX DE,HL
|
||||
; CF = 0
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
JR NZ,.MM3
|
||||
INC HL
|
||||
.MM3: LD (HL),0
|
||||
JP .ITs_DIR
|
||||
;
|
||||
.next_step: LD BC,FAT_DIRECTORY_RECORD
|
||||
ADD IX,BC
|
||||
JR NC,.big_loop
|
||||
;
|
||||
.error: POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.ADDSPEC: LD HL,CORE_BUFFERS.WorkDirectory+1
|
||||
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH-1
|
||||
CALL .CHECK_SLASH
|
||||
JR C,.error
|
||||
;R011
|
||||
LD A,B
|
||||
AND A
|
||||
JR NZ,.nxt
|
||||
LD A,C
|
||||
CP 8+1+3 ;!HARDCODE ¨¬ï ª â «®£ + â®çª + à áè¨à¥¨¥
|
||||
JR C,.error
|
||||
.nxt: ;
|
||||
LD E,XL
|
||||
LD D,XH
|
||||
; [x] ®¯â¨¬¨§ æ¨ï ¯® à §¬¥àã
|
||||
EX DE,HL
|
||||
CALL GetName
|
||||
EX DE,HL
|
||||
;
|
||||
|
||||
; LD BC,256*8 + ' ' ;!HARDCODE
|
||||
; .MM1: LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM2
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; .MM2 DJNZ .MM1 ;x42-40 50-55
|
||||
; LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),"."
|
||||
; INC HL
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; LD A,(DE)
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),A
|
||||
; LD BC,256*8 + ' ' ;!HARDCODE
|
||||
; .MM1: LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM2
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; .MM2 DJNZ .MM1 ;x42-40 50-55
|
||||
; LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),"."
|
||||
; INC HL
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; LD A,(DE)
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),A
|
||||
; .MM2_5: INC HL
|
||||
; .MM3: LD (HL),0
|
||||
; ; JP IT_DIR
|
||||
;
|
||||
.IT_DIR:; fat32
|
||||
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
|
||||
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
|
||||
LD YH,D
|
||||
LD YL,E
|
||||
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
||||
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.CHECK_SLASH:
|
||||
XOR A
|
||||
CPIR
|
||||
;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
||||
SCF
|
||||
RET PO
|
||||
;
|
||||
DEC HL
|
||||
DEC HL
|
||||
LD A,'\' ; #5C
|
||||
CP (HL)
|
||||
INC HL
|
||||
RET Z
|
||||
LD (HL),A
|
||||
INC HL
|
||||
XOR A ; á¡à®á CF § ®¤®
|
||||
LD (HL),A
|
||||
RET
|
||||
; .MM3: LD (HL),0
|
||||
; ; JP IT_DIR
|
||||
;
|
||||
.ITs_DIR: ; fat32
|
||||
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
|
||||
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
|
||||
LD YH,D
|
||||
LD YL,E
|
||||
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
||||
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.CHECK_SLASH: XOR A
|
||||
CPIR
|
||||
;[x] 20/11/23 ¯à®¢¥àª ¢ë室 § £à ¨æë
|
||||
SCF
|
||||
RET PO
|
||||
;
|
||||
DEC HL
|
||||
DEC HL
|
||||
LD A,'\' ; #5C
|
||||
CP (HL)
|
||||
INC HL
|
||||
RET Z
|
||||
LD (HL),A
|
||||
INC HL
|
||||
XOR A ; á¡à®á CF § ®¤®
|
||||
LD (HL),A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
CHECK_ROOT_CLUSTER:
|
||||
@ -2775,6 +2770,20 @@ GET_OFFSET_IN_SECTORS:
|
||||
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
|
||||
;//MODULE: FAT
|
||||
;[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
|
||||
; BC - yyyyyyymmmmddddd y - year, m - month, d - day
|
||||
; (1980-2108)
|
||||
MK_TIME:
|
||||
LD A,L
|
||||
RLCA
|
||||
RLCA
|
||||
SLA A
|
||||
RL H
|
||||
SLA A
|
||||
RL H
|
||||
SLA A
|
||||
RL H
|
||||
SRL B
|
||||
OR B
|
||||
LD L,A
|
||||
|
||||
LD BC,#F844 ;(-1980)
|
||||
ADD IX,BC
|
||||
LD A,E
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
AND #F0
|
||||
LD B,XL
|
||||
SLA A
|
||||
RL B
|
||||
OR D
|
||||
LD C,A
|
||||
EX DE,HL
|
||||
AND A
|
||||
RET
|
||||
MK_TIME: LD A,L
|
||||
RLCA
|
||||
RLCA
|
||||
SLA A
|
||||
RL H
|
||||
SLA A
|
||||
RL H
|
||||
SLA A
|
||||
RL H
|
||||
SRL B
|
||||
OR B
|
||||
LD L,A
|
||||
;
|
||||
LD BC,#F844 ;(-1980)
|
||||
ADD IX,BC
|
||||
LD A,E
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
AND #F0
|
||||
LD B,XL
|
||||
SLA A
|
||||
RL B
|
||||
OR D
|
||||
LD C,A
|
||||
EX DE,HL
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
;!TODO Procedures
|
||||
@ -66,38 +65,37 @@ MK_TIME:
|
||||
; H - HOUR; L - MINUTE
|
||||
; B - SECOND (0...59)
|
||||
; IX- YEAR (0...65535)
|
||||
RMKTIME:
|
||||
EX DE,HL
|
||||
LD A,C
|
||||
AND #1F
|
||||
LD D,A
|
||||
SRL B
|
||||
RR C
|
||||
LD A,C
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F
|
||||
LD E,A
|
||||
LD C,B
|
||||
LD B,0
|
||||
LD IX,1980
|
||||
ADD IX,BC
|
||||
LD A,L
|
||||
AND #1F
|
||||
ADD A,A
|
||||
LD B,A
|
||||
SRL H
|
||||
RR L
|
||||
SRL H
|
||||
RR L
|
||||
SRL H
|
||||
RR L
|
||||
SRL L
|
||||
SRL L
|
||||
AND A
|
||||
RET
|
||||
RMKTIME: EX DE,HL
|
||||
LD A,C
|
||||
AND #1F
|
||||
LD D,A
|
||||
SRL B
|
||||
RR C
|
||||
LD A,C
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F
|
||||
LD E,A
|
||||
LD C,B
|
||||
LD B,0
|
||||
LD IX,1980
|
||||
ADD IX,BC
|
||||
LD A,L
|
||||
AND #1F
|
||||
ADD A,A
|
||||
LD B,A
|
||||
SRL H
|
||||
RR L
|
||||
SRL H
|
||||
RR L
|
||||
SRL H
|
||||
RR L
|
||||
SRL L
|
||||
SRL L
|
||||
AND A
|
||||
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
|
||||
;----------------------------------------------------------------------;
|
||||
; —⥨¥ ॣ¨áâ஢ CMOS
|
||||
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
||||
RCMOS: LD C,BIOS.CMOS_RD
|
||||
RST ToBIOS
|
||||
;JP BCD2HEX
|
||||
RCMOS: LD C,BIOS.CMOS_RD
|
||||
RST ToBIOS
|
||||
;JP BCD2HEX
|
||||
; INPUT : A - BCD
|
||||
; OUTPUT: A - HEX
|
||||
BCD2HEX:
|
||||
LD E,A
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F
|
||||
LD D,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,D
|
||||
ADD A,A
|
||||
LD D,A
|
||||
LD A,E
|
||||
AND #0F
|
||||
ADD A,D
|
||||
RET
|
||||
BCD2HEX: LD E,A
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F
|
||||
LD D,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,D
|
||||
ADD A,A
|
||||
LD D,A
|
||||
LD A,E
|
||||
AND #0F
|
||||
ADD A,D
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
;!TODO hardware
|
||||
;----------------------------------------------------------------------;
|
||||
; ‡ ¯¨áì ॣ¨áâ஢ CMOS
|
||||
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
||||
WCMOS: CALL HEX2BCD
|
||||
LD C,BIOS.CMOS_WR
|
||||
JP ToBIOS
|
||||
WCMOS: CALL HEX2BCD
|
||||
LD C,BIOS.CMOS_WR
|
||||
JP ToBIOS
|
||||
|
||||
; INPUT : A - HEX
|
||||
; OUTPUT: A - BCD
|
||||
HEX2BCD:
|
||||
LD BC,#0AFF
|
||||
.loop: INC C
|
||||
SUB B
|
||||
JR NC,.loop
|
||||
ADD A,B
|
||||
LD B,A
|
||||
LD A,C
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
AND #F0
|
||||
OR B
|
||||
RET
|
||||
HEX2BCD: LD BC,#0AFF
|
||||
.loop: INC C
|
||||
SUB B
|
||||
JR NC,.loop
|
||||
;
|
||||
ADD A,B
|
||||
LD B,A
|
||||
LD A,C
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
AND #F0
|
||||
OR B
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
@ -31,26 +31,27 @@
|
||||
; ®¬¥à ¢¥àᨨ (0..9)
|
||||
VERS EQU 1
|
||||
; ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
MODF EQU 71
|
||||
MODF EQU 72
|
||||
; ®¬¥à ¡¨«¤ (0..999)
|
||||
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
|
||||
DAY EQU lua_DAY
|
||||
MONTH EQU lua_MONTH
|
||||
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
|
||||
|
||||
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