тестирование задержек
This commit is contained in:
parent
f8fe84be7e
commit
a3aef23cd6
@ -1 +1 @@
|
||||
Subproject commit be5eed466fa1c0e442b828a42ffc1b9abda23ac9
|
||||
Subproject commit 83c2b69b4af0a36475fa42378000fb6e57c59021
|
||||
@ -677,16 +677,15 @@ TAB_5xFNS:
|
||||
|
||||
;************************************
|
||||
; ‚室 ¢ äãªæ¨î ¯® RST18 ¨ RST8
|
||||
EXP_FNS_RST18:
|
||||
PUSH HL
|
||||
LD L,C
|
||||
LD H,high TAB_FNS
|
||||
LD C,(HL)
|
||||
INC H
|
||||
LD H,(HL)
|
||||
LD L,C
|
||||
EX (SP),HL
|
||||
RET
|
||||
EXP_FNS_RST18: PUSH HL
|
||||
LD L,C
|
||||
LD H,high TAB_FNS
|
||||
LD C,(HL)
|
||||
INC H
|
||||
LD H,(HL)
|
||||
LD L,C
|
||||
EX (SP),HL
|
||||
RET
|
||||
|
||||
; ATA_5x_RESET
|
||||
; ATA_5x_LONG_READ
|
||||
@ -704,50 +703,39 @@ EXP_FNS_RST18:
|
||||
; FN_RESERVED_5x
|
||||
; DRV_LIST
|
||||
|
||||
FN_5x_Parser_1: ; ATA_5x_RESET
|
||||
LD C,#01
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_2: ; ATA_5x_LONG_READ
|
||||
LD C,#02
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_3: ; ATA_5x_LONG_WRITE
|
||||
LD C,#03
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_4: ; ATA_5x_VERIFY
|
||||
LD C,#04
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_6: ; ATA_5x_WRITE
|
||||
LD C,#06
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_7: ; ATA_5x_DETECT
|
||||
LD C,#07
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_8: ; ATA_5x_GET_PAR
|
||||
LD C,#08
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_9: ; ATA_5x_SET_PAR
|
||||
LD C,#09
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_E: ; DRV_EXTENDED
|
||||
LD C,#0E
|
||||
JP FN_5x_Parser
|
||||
FN_5x_Parser_5: ; ATA_5x_READ
|
||||
LD C,5
|
||||
FN_5x_Parser:
|
||||
PUSH HL
|
||||
LD H,A
|
||||
AND #F0
|
||||
OR C
|
||||
; âãâ ¢ A ®¬¥à “‘’<E28098>މ‘’‚€ + <20>ŽŒ…<C592> ”“<E2809D>Š–ˆˆ
|
||||
LD L,A
|
||||
LD A,H
|
||||
LD H,high TAB_5xFNS
|
||||
LD C,(HL)
|
||||
INC H
|
||||
LD H,(HL)
|
||||
LD L,C
|
||||
EX (SP),HL
|
||||
RET
|
||||
FN_5x_Parser_1: LD C,#01 ; ATA_5x_RESET
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_2: LD C,#02 ; ATA_5x_LONG_READ
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_3: LD C,#03 ; ATA_5x_LONG_WRITE
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_4: LD C,#04 ; ATA_5x_VERIFY
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_6: LD C,#06 ; ATA_5x_WRITE
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_7: LD C,#07 ; ATA_5x_DETECT
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_8: LD C,#08 ; ATA_5x_GET_PAR
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_9: LD C,#09 ; ATA_5x_SET_PAR
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_E: LD C,#0E ; DRV_EXTENDED
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_5: LD C,5 ; ATA_5x_READ
|
||||
FN_5x_Parser: PUSH HL
|
||||
LD H,A
|
||||
AND #F0
|
||||
OR C
|
||||
; âãâ ¢ A ®¬¥à “‘’<E28098>މ‘’‚€ + <20>ŽŒ…<C592> ”“<E2809D>Š–ˆˆ
|
||||
LD L,A
|
||||
LD A,H
|
||||
LD H,high TAB_5xFNS
|
||||
LD C,(HL)
|
||||
INC H
|
||||
LD H,(HL)
|
||||
LD L,C
|
||||
EX (SP),HL
|
||||
RET
|
||||
|
||||
; ‚室 ¢ äãªæ¨¨ <20>ˆŽ‘ ¨§ TR-DOS
|
||||
EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ᯥªâàã¬
|
||||
|
||||
@ -767,7 +767,7 @@ POST_5_OK:
|
||||
; Don't use IY before this point if it`s normal booting!!!
|
||||
LD IX,0
|
||||
XOR A
|
||||
ADD IX,SP ; ¢®ááâ ®¢¨âì § 票¥ ¯¥à¥¤ ®¥ § £àã§ç¨ª®¬ ª®äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
|
||||
ADD IX,SP ; ¢®ááâ ®¢¨âì § 票¥ ¯¥à¥¤ ®¥ § £àã§ç¨ª®¬ ª®äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
|
||||
; ‚ í⮬ ¬¥á⥠ã á IX:IY ¨§ Loader.asm
|
||||
; „®â 騫¨ ¤® áî¤ ¬¥âªã ®â «® ¤¥à
|
||||
;[x] 31/12/2023 ¯®¤áâà 客ª ®â ¥¤®ãâ¥çª¨ ¯ ¬ïâ¨
|
||||
@ -788,7 +788,7 @@ POST_5_OK:
|
||||
JR NZ,.no_conf_reload
|
||||
LD A,#80
|
||||
.no_conf_reload:
|
||||
LD R,A ; reg R bit7 - ¯à¨§ ª à ¡®âë «® ¤¥à
|
||||
LD R,A ; reg R bit7 - ¯à¨§ ª § ¯ãáª á ®âà ¡®âª®© «® ¤¥à ª®äë
|
||||
;
|
||||
; ¢á直© á«ãç ©
|
||||
LD HL,ACEX.Config_ID.Sp2000
|
||||
@ -881,24 +881,24 @@ No_Reset_handlers:
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
MODULE Prepare_For_Setup
|
||||
Set_ALL_Mode: LD A,Port_All_Mode.DEFAULT
|
||||
LD BC,Port_All_Mode
|
||||
OUT (C),A
|
||||
Set_ALL_Mode: LD A,Port_All_Mode.DEFAULT
|
||||
LD BC,Port_All_Mode
|
||||
OUT (C),A
|
||||
|
||||
Set_Default_Screen:
|
||||
CALL FN_SYNC.INT_DEF ; set default int
|
||||
ld a,128+4 ; !HARDCODE
|
||||
CALL FN_SYNC ; set default vsync
|
||||
Setup_to_RAM: LD HL,Setup_Starter.Start
|
||||
LD DE,COMPILE_ADDR.SETUP_STARTER
|
||||
LD BC,Setup_Starter.Size
|
||||
CALL FN_SYNC.INT_DEF ; set default int
|
||||
LD A,128+4 ; !HARDCODE
|
||||
CALL FN_SYNC ; set default vsync
|
||||
Setup_to_RAM: LD HL,Setup_Starter.Start
|
||||
LD DE,COMPILE_ADDR.SETUP_STARTER
|
||||
LD BC,Setup_Starter.Size
|
||||
LDIR
|
||||
; á⥪ ª« ¤ñâáï ¤à¥á ¢®§¢à â ¨ ¤ «ìè¥ â é¨âáï ¢á直¬¨ ª®áâë«ï¬¨, ç⮡ ¢¥àãâìáï § ¤
|
||||
CALL Setup_Starter.Exec ; #C000
|
||||
CALL Setup_Starter.Exec ; #C000
|
||||
;JP PrepareToZX
|
||||
ENDMODULE
|
||||
|
||||
PrepareToZX: ; Setup HDD drives for ZX Spectrum mode
|
||||
;PrepareToZX: ; Setup HDD drives for ZX Spectrum mode
|
||||
; DI
|
||||
; LD D,CMOS_CELL.TRDOSmount
|
||||
; CALL CMOS_RD
|
||||
@ -1052,8 +1052,8 @@ PORTS_INIT:
|
||||
OUT (C),A
|
||||
; £«ã訬 ª®¢®ªá
|
||||
XOR A
|
||||
OUT (CBL.SYS_PORT),A
|
||||
LD BC,CBL.OUT
|
||||
OUT (SP_SND.CBL.SYS_PORT),A
|
||||
LD BC,SP_SND.CBL.OUT
|
||||
LD A,#80
|
||||
.CBL_MUTE: OUT (C),A
|
||||
DJNZ .CBL_MUTE
|
||||
@ -1556,7 +1556,7 @@ BEEP: LD A,#10
|
||||
JR NZ,BEEP
|
||||
RET
|
||||
;
|
||||
.beep_loop: OUT (ZX_Beeper),A
|
||||
.beep_loop: OUT (SP_SND.Beeper),A
|
||||
LD B,D
|
||||
LD C,E
|
||||
;
|
||||
|
||||
@ -181,7 +181,7 @@ ATAPI_5x_READ: ;PUSH IY ; !FIXIT
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
JP ATAPI_5x_LONG_READ.main
|
||||
JR ATAPI_5x_LONG_READ.main
|
||||
;[]================================================================[#52]
|
||||
;Function: Long Read Sectors
|
||||
; A - Disk
|
||||
@ -198,17 +198,19 @@ ATAPI_5x_LONG_READ:
|
||||
;
|
||||
;PUSH IY ; !FIXIT § 祬?
|
||||
LD C,1 ; ¯à¨§ ª long
|
||||
.main: SAFE_PORTY_2
|
||||
PUSH BC
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
.main: EX AF,AF'
|
||||
AND A ;read
|
||||
EX AF,AF'
|
||||
JR ATAPI_BEGIN_RW
|
||||
;
|
||||
EX AF,AF'
|
||||
AND A ;read
|
||||
EX AF,AF'
|
||||
CALL RW_ATAPI_SECTORs
|
||||
; [ ] sector size. media changed
|
||||
JP ATA_5x_LONG_READ.shared
|
||||
; SAFE_PORTY_2
|
||||
; PUSH BC
|
||||
; PUSH IX
|
||||
; PUSH HL
|
||||
; ;
|
||||
; CALL RW_ATAPI_SECTORs
|
||||
; ; [ ] sector size. media changed
|
||||
; JP ATA_5x_LONG_READ.shared
|
||||
; JP NC,ATA_5x_LONG_READ.shared
|
||||
; CP BIOS.Error.UnitAttention
|
||||
; JR Z,ATAPI_MEDIA_ERROR
|
||||
@ -278,6 +280,15 @@ RW_ATAPI_SECTORs:
|
||||
|
||||
;[]===========================================================[#52, #55]
|
||||
|
||||
ATAPI_BEGIN_RW: SAFE_PORTY_2
|
||||
PUSH BC
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
;
|
||||
CALL RW_ATAPI_SECTORs
|
||||
;
|
||||
JP ATA_5x_LONG_READ.shared
|
||||
|
||||
;[]================================================================[#56]
|
||||
;Function: Write Sectors
|
||||
; A - Disk
|
||||
@ -289,11 +300,14 @@ RW_ATAPI_SECTORs:
|
||||
; DE - Address + (Sector counter * Size sector)
|
||||
;WRITE SECTOR(S)
|
||||
ATAPI_5x_WRITE: ;PUSH IY ; !FIXIT § 祬?
|
||||
LD C,0 ; ¯à¨§ ª short
|
||||
; ¯à®¡ ¡ £
|
||||
LD C,0 ; ¯à¨§ ª short
|
||||
;LD C,1 ; ¯à¨§ ª long
|
||||
;
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
JP ATAPI_5x_LONG_WRITE.main
|
||||
JR ATAPI_5x_LONG_WRITE.main
|
||||
;[]================================================================[#53]
|
||||
;Function: Long Write Sectors
|
||||
; A - Disk
|
||||
@ -310,17 +324,19 @@ ATAPI_5x_LONG_WRITE:
|
||||
;
|
||||
;PUSH IY ; !FIXIT § 祬?
|
||||
LD C,1 ; ¯à¨§ ª long
|
||||
.main: SAFE_PORTY_2
|
||||
PUSH BC
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
.main: EX AF,AF'
|
||||
SCF ;write
|
||||
EX AF,AF'
|
||||
JR ATAPI_BEGIN_RW
|
||||
;
|
||||
EX AF,AF'
|
||||
SCF ;write
|
||||
EX AF,AF'
|
||||
CALL RW_ATAPI_SECTORs
|
||||
;
|
||||
JP ATA_5x_LONG_READ.shared
|
||||
; SAFE_PORTY_2
|
||||
; PUSH BC
|
||||
; PUSH IX
|
||||
; PUSH HL
|
||||
; ;
|
||||
; CALL RW_ATAPI_SECTORs
|
||||
; ;
|
||||
; JP ATA_5x_LONG_READ.shared
|
||||
|
||||
;[]================================================================[#57]
|
||||
;Function: Detect Disk
|
||||
@ -607,9 +623,10 @@ EXEC_PACKET_COMMAND:
|
||||
;
|
||||
POP BC
|
||||
OUT (C),B
|
||||
;
|
||||
LD B,#80
|
||||
.pause2: DJNZ .pause2
|
||||
; pause
|
||||
LD B,0
|
||||
DJNZ $
|
||||
; DJNZ $
|
||||
;
|
||||
EX AF,AF'
|
||||
LD XH,A ; áâà ¨æ ¤«ï R/W_LONG
|
||||
@ -617,7 +634,9 @@ EXEC_PACKET_COMMAND:
|
||||
EX AF,AF'
|
||||
EX DE,HL
|
||||
;
|
||||
.AP_LOOP: CALL ATAPI_CHECK_DRV
|
||||
.AP_LOOP: ;LD B,128
|
||||
;DJNZ $
|
||||
CALL ATAPI_CHECK_DRV
|
||||
JP C,.error;_APLOOP
|
||||
RET Z
|
||||
;====== IF DATA REQUEST ===============================================;
|
||||
@ -626,23 +645,6 @@ EXEC_PACKET_COMMAND:
|
||||
;
|
||||
LD A,XH
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
;LD BC,IDE.Read.ByteCountLow
|
||||
;IN E,(C)
|
||||
;INC C ;LD BC,IDE.Read.ByteCountHigh
|
||||
;IN D,(C) ;TRANSFER BLOCK SIZE
|
||||
;;
|
||||
;LD A,D
|
||||
;OR E
|
||||
;RET Z ;BLOCK = 0
|
||||
;; 㬥ìè ¥¬ áçñâ稪 § £à㦠¥¬ëå ¡ ©â®¢ ¢ 2 à § . —¨â ¥¬ ¯® 2 ¡ ©â
|
||||
;SRL D
|
||||
;RR E
|
||||
;;
|
||||
;LD BC,IDE.Read.InterruptReason
|
||||
;IN A,(C)
|
||||
;AND IDE.InterruptReasonByte.IO
|
||||
;LD BC,IDE.Read.Data
|
||||
CALL ATAPI_PREPARE_RW
|
||||
RET NC
|
||||
JR Z,.WRITE_DATA
|
||||
@ -688,24 +690,7 @@ ATAPI_IdlePasses:
|
||||
JP C,EXEC_PACKET_COMMAND.error
|
||||
JP Z,EXEC_PACKET_COMMAND.error_fail
|
||||
;
|
||||
.Enter: ;LD BC,IDE.Read.ByteCountLow
|
||||
;IN E,(C)
|
||||
;INC C ;LD BC,IDE.Read.ByteCountHigh
|
||||
;IN D,(C) ;TRANSFER BLOCK SIZE
|
||||
;;
|
||||
;LD A,D
|
||||
;OR E
|
||||
;RET Z ;BLOCK = 0
|
||||
;;
|
||||
;; 㬥ìè ¥¬ áçñâ稪 § £à㦠¥¬ëå ¡ ©â®¢ ¢ 2 à § . —¨â ¥¬ ¯® 2 ¡ ©â
|
||||
;SRL D
|
||||
;RR E
|
||||
;;
|
||||
;LD BC,IDE.Read.InterruptReason
|
||||
;IN A,(C)
|
||||
;AND IDE.InterruptReasonByte.IO
|
||||
;LD BC,IDE.Read.Data
|
||||
CALL ATAPI_PREPARE_RW
|
||||
.Enter: CALL ATAPI_PREPARE_RW
|
||||
RET NC
|
||||
JR Z,.write_data
|
||||
;
|
||||
@ -737,6 +722,7 @@ ATAPI_IdlePasses:
|
||||
ATAPI_CHECK_DRV:
|
||||
;EX DE,HL
|
||||
EXX
|
||||
;CALL .zeroWait
|
||||
CALL ATAPI_WAITPRT
|
||||
EXX
|
||||
; ZF=1
|
||||
@ -764,9 +750,25 @@ ATAPI_CHECK_DRV:
|
||||
JP Z,ATAPI_MEDIA_ERROR
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JP Z,ATAPI_MEDIA_ERROR
|
||||
;
|
||||
;CP BIOS.Error.ATAPI.IllegalRequest
|
||||
;RET Z
|
||||
;
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
; .zeroWait: ;LD B,2
|
||||
; LD HL,#800
|
||||
; .loop: LD A,high IDE.Read.Status
|
||||
; IN A,(low IDE.Read.Status)
|
||||
; AND A
|
||||
; RET NZ
|
||||
; DEC HL
|
||||
; LD A,H
|
||||
; OR L
|
||||
; JR NZ,.loop
|
||||
; ;DJNZ .loop
|
||||
; RET
|
||||
|
||||
ATAPI_PREPARE_RW:
|
||||
LD BC,IDE.Read.ByteCountLow
|
||||
@ -836,9 +838,9 @@ ATAPI_GET_ERROR_REG:
|
||||
; !!! ¥ª®â®àë¥ äãªæ¨¨ ¤¥îâáï, çâ® ¢ë室¥ ¢á¥£¤ ZF
|
||||
; ¥ ¤®«¦ âண âì ॣ. C
|
||||
ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
|
||||
.Custom: LD B,100
|
||||
.Custom: LD B,6 ; 3 = ®¡é ï § ¤¥à¦ª ®ª®«® ᥪã¤ë
|
||||
LD HL,#0000
|
||||
;
|
||||
; 4ÿ128ÿ768
|
||||
.LOOP: LD A,high IDE.Read.Status
|
||||
IN A,(low IDE.Read.Status)
|
||||
CP #FF
|
||||
@ -852,13 +854,59 @@ ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,.LOOP
|
||||
;
|
||||
; LD A,high IDE.Read.Status
|
||||
; IN A,(low IDE.Read.Status)
|
||||
; CP #FF
|
||||
; SCF
|
||||
; RET Z
|
||||
;
|
||||
; 1ÿ392ÿ512ÿ256
|
||||
DJNZ .LOOP
|
||||
;
|
||||
; LD A,high IDE.Read.Status
|
||||
; IN A,(low IDE.Read.Status)
|
||||
; INC A ;CP #FF
|
||||
; SCF
|
||||
; RET Z
|
||||
;
|
||||
LD A,BIOS.Error.Busy
|
||||
RET
|
||||
;
|
||||
.error: SCF
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; D - MASK, E - PATTERN
|
||||
; !!! ¥ª®â®àë¥ äãªæ¨¨ ¤¥îâáï, çâ® ¢ë室¥ ¢á¥£¤ ZF
|
||||
; ¥ ¤®«¦ âண âì ॣ. C
|
||||
; ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
|
||||
; .Custom:
|
||||
; .LOOP: LD A,high IDE.Read.Status
|
||||
; IN A,(low IDE.Read.Status)
|
||||
; CP #FF
|
||||
; JR Z,.error
|
||||
; ;
|
||||
; AND D
|
||||
; CP E
|
||||
; RET Z
|
||||
; JR .LOOP
|
||||
; ;
|
||||
; ; LD A,high IDE.Read.Status
|
||||
; ; IN A,(low IDE.Read.Status)
|
||||
; ; INC A ;CP #FF
|
||||
; ; SCF
|
||||
; ; RET Z
|
||||
; ; ;
|
||||
; ; LD A,BIOS.Error.Busy
|
||||
; ; RET
|
||||
; ;
|
||||
; .error: SCF
|
||||
; RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; DE - buffer
|
||||
ATAPI_READ_CAPACITY_DATA:
|
||||
|
||||
@ -119,7 +119,7 @@ RESERVED_PAGES: ;[x] free zx pages!
|
||||
DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F
|
||||
;
|
||||
;DB MODE_PAGE ; ?????
|
||||
DB CBL.BUFFER_PAGE ; Page for CBL audio
|
||||
DB SP_SND.CBL.BUFFER_PAGE ; Page for CBL audio
|
||||
DB SYS_PAGE ; Page for system (BIOS) variables
|
||||
DB #FF ; End of the block
|
||||
;
|
||||
|
||||
@ -72,7 +72,7 @@ RST_CONF:
|
||||
LD A,#80
|
||||
JR Z,.YES_CBL
|
||||
XOR A
|
||||
.YES_CBL: LD BC,CBL.SYS_PORT
|
||||
.YES_CBL: LD BC,SP_SND.CBL.SYS_PORT
|
||||
OUT (C),A
|
||||
;
|
||||
LD A,E ; config-byte
|
||||
|
||||
@ -163,12 +163,10 @@ EMM.CheckColdInit:
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .loop
|
||||
|
||||
; Disable user IM address in SYS_PAGE
|
||||
XOR A
|
||||
LD (SYS_PAGE.INT_ID - #4000),A
|
||||
;
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT2),A
|
||||
RET
|
||||
|
||||
@ -397,7 +397,8 @@ SETUP_FROM_CMOS:
|
||||
; RET
|
||||
/////////////////////////////////////////////////////////////////////[^]
|
||||
/////////////////////////////////////////////////////////////////////[v]
|
||||
IDESPEC: IN A,(SLOT3)
|
||||
PARSE_IdentifyDevice:
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
@ -440,11 +441,7 @@ IDESPEC: IN A,(SLOT3)
|
||||
;
|
||||
LD A,(IDENTIFY_DEVICE_BUFFER.NumSectorsPerTrack)
|
||||
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),A
|
||||
IF IDE_Optimization
|
||||
LD B,high IDE.Write.Counter
|
||||
ELSE
|
||||
LD BC,IDE.Write.Counter
|
||||
ENDIF
|
||||
LD B,high IDE.Write.Counter
|
||||
OUT (C),A
|
||||
LD A,IDE.CMD.ATA.InitializeDeviceParameters
|
||||
CALL IDE_CMD
|
||||
@ -460,7 +457,8 @@ IDESPEC: IN A,(SLOT3)
|
||||
;
|
||||
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow),L
|
||||
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
|
||||
.END: ; [x] save hdd parameters to cmos for "setup" in settings
|
||||
.END: RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||
; [x] save hdd parameters to cmos for "setup" in settings
|
||||
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) ; for save to cmos in GETPARM
|
||||
;
|
||||
EX AF,AF'
|
||||
@ -474,6 +472,8 @@ IDESPEC: IN A,(SLOT3)
|
||||
LD HL,ICHANEL
|
||||
OR (HL)
|
||||
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
|
||||
;
|
||||
;
|
||||
; ¢á直© á«ãç ©
|
||||
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
||||
LD B,100 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
||||
@ -484,9 +484,10 @@ IDESPEC: IN A,(SLOT3)
|
||||
POP BC
|
||||
JR NC,.s_size
|
||||
;
|
||||
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JR Z,IDESPEC.END
|
||||
JR Z,PARSE_IdentifyDevice.END ;!TEST ;!FIXIT ZIP bug
|
||||
;JR Z,.TEST_SET
|
||||
|
||||
;
|
||||
HALT
|
||||
DJNZ .get_error_loop
|
||||
@ -508,9 +509,59 @@ IDESPEC: IN A,(SLOT3)
|
||||
;
|
||||
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H
|
||||
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
|
||||
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||
;
|
||||
JR IDESPEC.END
|
||||
JR PARSE_IdentifyDevice.END ;!TEST ;!FIXIT ZIP bug
|
||||
;
|
||||
/*
|
||||
;====; ;!TEST ;!FIXIT ZIP bug
|
||||
.TEST_SET: LD HL,.MODE_SENSE
|
||||
LD DE,SYS_PAGE.MS_BPB ; ¯à®á⮠㦥 ¡ë« ¡ãä¥à
|
||||
LD BC,BIOS.DRV_EXTENDED.ATAPI_Custom_PCMD
|
||||
CALL ATAPI_CUSTOM_CMD
|
||||
JR NC,.OK_DONE
|
||||
;
|
||||
LD A,COLORS.CGA.BORDER.CYAN
|
||||
OUT (BorderColor),A
|
||||
JR .go_exit
|
||||
;
|
||||
.OK_DONE: LD A,(SYS_PAGE.MS_BPB + 2)
|
||||
AND A
|
||||
JR NZ,.go_exit
|
||||
;
|
||||
LD (SYS_PAGE.MS_BPB + 10),A
|
||||
LD HL,(SYS_PAGE.MS_BPB)
|
||||
LD (.MODE_SELECT.Size),HL
|
||||
LD HL,.MODE_SELECT
|
||||
LD DE,SYS_PAGE.MS_BPB ; ¯à®á⮠㦥 ¡ë« ¡ãä¥à
|
||||
LD BC,BIOS.DRV_EXTENDED.ATAPI_Custom_PCMD
|
||||
CALL ATAPI_CUSTOM_CMD
|
||||
JR NC,.go_exit
|
||||
;
|
||||
LD A,COLORS.CGA.BORDER.GREEN
|
||||
OUT (BorderColor),A
|
||||
;JR .go_exit
|
||||
;
|
||||
.go_exit: AND A
|
||||
JP PARSE_IdentifyDevice.END
|
||||
;
|
||||
;
|
||||
|
||||
.MODE_SENSE: BYTE #5A
|
||||
BYTE #08
|
||||
.MODE_SENSE.Page: BYTE #08 ;bit7..6 - Page Control, bit5..0 - Page Code
|
||||
BLOCK 4,0
|
||||
BYTE #02,#00
|
||||
BLOCK 3,0
|
||||
;
|
||||
.MODE_SELECT: BYTE #55
|
||||
BYTE #08
|
||||
.MODE_SELECT.Page: BYTE #08 ;bit7..6 - Page Control, bit5..0 - Page Code
|
||||
BLOCK 4,0
|
||||
.MODE_SELECT.Size: BYTE #02,#00
|
||||
BLOCK 3,0
|
||||
;
|
||||
;====; ;!TEST
|
||||
*/ ;
|
||||
/////////////////////////////////////////////////////////////////////[^]
|
||||
|
||||
|
||||
@ -761,7 +812,7 @@ GETPARAM: LD HL,PAUSES.WAIT.IDE
|
||||
LD HL,IDENTIFY_DEVICE_BUFFER
|
||||
INIR
|
||||
INIR
|
||||
CALL IDESPEC
|
||||
CALL PARSE_IdentifyDevice
|
||||
; [x] save hdd parameters to cmos for "setup" in settings
|
||||
CALL SaveToCMOS
|
||||
AND A
|
||||
|
||||
@ -17,32 +17,38 @@ INT_POINTER: WORD 0
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
INT_HANDLER:
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
EXX
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
CALL KEYSCAN
|
||||
POP IY
|
||||
POP IX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
EXX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
EI
|
||||
RETI
|
||||
INT_HANDLER: PUSH AF
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
EXX
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
CALL KEYSCAN
|
||||
;
|
||||
IF STARTUP_SND
|
||||
SCF
|
||||
.sndSwitch: CCF ; SCF/CCF
|
||||
CALL C,STARTUP_SOUND
|
||||
ENDIF
|
||||
;
|
||||
POP IY
|
||||
POP IX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
EXX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
EI
|
||||
RETI
|
||||
;
|
||||
@ -554,15 +554,17 @@ RESTART_ID:
|
||||
.str: DZ "RESTART"
|
||||
.size EQU $ - RESTART_ID.str
|
||||
|
||||
Start_again:
|
||||
ld sp,STACK-2
|
||||
START:
|
||||
DI
|
||||
PUSH AF
|
||||
XOR A
|
||||
LD (ERRSUM),A
|
||||
LD (ERRSUM.ErrDateTime),A
|
||||
|
||||
Start_again: LD SP,STACK-2
|
||||
START: DI
|
||||
PUSH AF
|
||||
XOR A
|
||||
LD (ERRSUM),A
|
||||
LD (ERRSUM.ErrDateTime),A
|
||||
;
|
||||
LD A,R ; reg R bit7 - ¯à¨§ ª § ¯ãáª á ®âà ¡®âª®© «® ¤¥à ª®äë (¨§ SET_CONFIG_ID)
|
||||
LD (LOGOTYPE.playSnd),A
|
||||
;
|
||||
; LD C,#97
|
||||
; RST_to_BIOS_18
|
||||
; XOR A
|
||||
@ -1598,7 +1600,9 @@ ElementsBuffer:
|
||||
.DownCenter: BYTE "Á" ; DC - DownCenter
|
||||
.Size EQU $-ElementsBuffer
|
||||
;
|
||||
|
||||
IF STARTUP_SND
|
||||
INCLUDE 'startup_sound.asm'
|
||||
ENDIF
|
||||
INCLUDE 'VIDEO_IO.asm'
|
||||
INCLUDE 'AUTOIDE.asm'
|
||||
INCLUDE 'SETTINGS.asm'
|
||||
|
||||
@ -290,22 +290,33 @@ PRSYM: LD B,1
|
||||
//////////////////// LOGO \\\\\\\\\\\\\\\\\\\\
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
LOGOTYPE: CALL SHOW_LOGO
|
||||
;
|
||||
IF STARTUP_SND
|
||||
.playSnd+1: LD A,#80
|
||||
RLA
|
||||
JR NC,.noSound
|
||||
;
|
||||
LD A,#37 ; opcode SCF, play sound on
|
||||
LD (INT_HANDLER.sndSwitch),A
|
||||
.noSound: ;
|
||||
ENDIF
|
||||
;
|
||||
LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay
|
||||
CALL GET_CMOS_VALUE
|
||||
OR A
|
||||
JR Z,.EASYDLY ; Delay average
|
||||
JR Z,.MinDelay
|
||||
DEC A
|
||||
JR Z,.SKIPDLY ; Delay disabled
|
||||
JR Z,.AverageDelay
|
||||
; Delay enabled
|
||||
LD B,LOGO_DELAY_NORM
|
||||
.loop EI
|
||||
push bc
|
||||
HALT
|
||||
CALL go_setup
|
||||
CALL go_setup
|
||||
pop bc
|
||||
DJNZ .loop
|
||||
; Delay average
|
||||
.SKIPDLY: LD B,LOGO_DELAY_MAX
|
||||
.AverageDelay: LD B,LOGO_DELAY_MAX
|
||||
.MMA: PUSH BC
|
||||
EI
|
||||
HALT
|
||||
@ -323,12 +334,17 @@ LOGOTYPE: CALL SHOW_LOGO
|
||||
DI
|
||||
CALL WIN_OPEN.SCR1
|
||||
;
|
||||
IF STARTUP_SND
|
||||
LD A,#3F ; opcode CCF, play sound off
|
||||
LD (INT_HANDLER.sndSwitch),A
|
||||
ENDIF
|
||||
;
|
||||
LD DE,0
|
||||
LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE
|
||||
LD B,7
|
||||
JP LP_CLS_WIN
|
||||
; Delay disabled
|
||||
.EASYDLY: LD B,LOGO_DELAY_MIN
|
||||
.MinDelay: LD B,LOGO_DELAY_MIN
|
||||
.loop2: EI
|
||||
HALT
|
||||
DJNZ .loop2
|
||||
|
||||
215
src/bios/rom/SETUP/startup_sound.asm
Normal file
215
src/bios/rom/SETUP/startup_sound.asm
Normal file
@ -0,0 +1,215 @@
|
||||
; CODE BY €«¥ªá ¤à -=TmK deMarche=-
|
||||
; play frame
|
||||
; use: af,hl,de,bc 251
|
||||
STARTUP_SOUND: LD HL,.BYTE_POS
|
||||
LD A,(HL)
|
||||
LD C,SP_SND.AY
|
||||
CP .toneDataSize + 1
|
||||
JR C,.play
|
||||
;-- mus off
|
||||
XOR A
|
||||
LD E,A
|
||||
.offLp: LD B,high SP_SND.AY.CTRL
|
||||
OUT (C),A
|
||||
LD B,high SP_SND.AY.DATA
|
||||
OUT (C),E
|
||||
INC A
|
||||
CP 15
|
||||
JR NZ,.offLp
|
||||
RET
|
||||
;
|
||||
.play: LD DE,#0700+56
|
||||
LD B,high SP_SND.AY.CTRL
|
||||
OUT (C),D
|
||||
LD B,high SP_SND.AY.DATA
|
||||
OUT (C),E
|
||||
CP 33
|
||||
JR NC,.playVol
|
||||
AND 3
|
||||
JR NZ,.playVol
|
||||
;--- play tone
|
||||
LD HL,(.WORD_TONE)
|
||||
;A=0
|
||||
.playToneLp: LD B,high SP_SND.AY.CTRL
|
||||
OUT (C),A
|
||||
LD B,high SP_SND.AY.DATA
|
||||
OUTI
|
||||
INC A
|
||||
CP 6
|
||||
JR NZ,.playToneLp
|
||||
;
|
||||
LD (.WORD_TONE),HL
|
||||
.playVol: LD HL,(.WORD_VOL)
|
||||
LD A,8
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
.playVolLp: LD B,high SP_SND.AY.CTRL
|
||||
OUT (C),A
|
||||
LD B,high SP_SND.AY.DATA
|
||||
OUT (C),E
|
||||
INC A
|
||||
CP 11
|
||||
JR NZ,.playVolLp
|
||||
;
|
||||
LD (.WORD_VOL),HL
|
||||
LD HL,.BYTE_POS
|
||||
INC (HL)
|
||||
RET
|
||||
;-----------------------------------------------------------------------
|
||||
.BYTE_POS: DB 0
|
||||
.WORD_VOL: DW .volData
|
||||
.WORD_TONE: DW .toneData
|
||||
;-----------------------------------------------------------------------
|
||||
.volData: ;DB 11,10,08,06,08,07,06,05
|
||||
;DB 12,11,09,07,09,08,07,06
|
||||
DB 13,12,10,08,09,08,07,06
|
||||
DB 13,12,10,08,09,08,07,06
|
||||
DB 13,12,10,08,09,08,07,06
|
||||
DB 12,12,10,08,07,06,05,04
|
||||
DB 07,06,05,04,03,02,01,00
|
||||
DB 05,04,03,02,01,00,00,00
|
||||
DB 04,03,02,02,01,00,00,00
|
||||
DB 02,02,01,01,00,00,00,00
|
||||
|
||||
.toneData: DB 68,3,136,6,162,1
|
||||
DB 136,6,136,6,68,3
|
||||
DB 57,1,229,4,114,2
|
||||
;DB 68,3,229,4,162,1
|
||||
;DB 46,2,92,4,23,1
|
||||
;DB 57,1,92,4,114,2
|
||||
;DB 209,0,68,3,162,1
|
||||
;DB 46,2,68,3,23,1
|
||||
;DB 209,0,68,3,162,1
|
||||
.toneDataSize EQU $ - .toneData
|
||||
|
||||
.codeEnd: DISPLAY "StartUp Sound size: ",/A,.codeEnd - STARTUP_SOUND
|
||||
|
||||
; savesna "startup_sound.sna", #8000
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
|
||||
MODULE STARTUP_SOUND
|
||||
DEFINE SND_VARIANT 2 ; 0, 1, 2
|
||||
|
||||
IF SND_VARIANT == 0
|
||||
DEFINE SND_Const1 15
|
||||
DEFINE SND_Const2 7
|
||||
;
|
||||
ELSEIF SND_VARIANT == 1
|
||||
DEFINE SND_Const1 15
|
||||
DEFINE SND_Const2 7
|
||||
;
|
||||
ELSEIF SND_VARIANT == 2
|
||||
DEFINE SND_Const1 14
|
||||
DEFINE SND_Const2 6
|
||||
ENDIF
|
||||
|
||||
codeBegin: LD A,SND_Const1
|
||||
LD HL,.volData
|
||||
LD DE,.sndData
|
||||
.lp: CALL .snd
|
||||
CALL .vol
|
||||
CALL .vol
|
||||
CALL .vol
|
||||
DEC A
|
||||
JP NZ,.lp
|
||||
;--
|
||||
LD DE,#07ff
|
||||
LD B,E
|
||||
OUT (C),D
|
||||
LD B,#bf
|
||||
OUT (C),E
|
||||
RET
|
||||
;----------------
|
||||
.snd: CALL .vol
|
||||
CP SND_Const2
|
||||
RET C
|
||||
;
|
||||
.sndEnd: EX AF,AF
|
||||
EX DE,HL
|
||||
PUSH DE
|
||||
XOR A
|
||||
.sndLp: LD B,#ff
|
||||
OUT (C),A
|
||||
LD B,#bf
|
||||
OUTI
|
||||
INC A
|
||||
CP 6
|
||||
JR NZ,.sndLp
|
||||
POP DE
|
||||
EX DE,HL
|
||||
EX AF,AF
|
||||
RET
|
||||
;----------------
|
||||
.vol: ;EI
|
||||
;HALT
|
||||
EX AF,AF
|
||||
PUSH DE
|
||||
LD BC,#fffd
|
||||
LD DE,#0700+56
|
||||
OUT (C),D
|
||||
LD B,#bf
|
||||
OUT (C),E
|
||||
LD A,8
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
.volLp: LD B,#ff
|
||||
OUT (C),A
|
||||
LD B,#bf
|
||||
OUT (C),E
|
||||
INC A
|
||||
CP 11
|
||||
JR NZ,.volLp
|
||||
POP DE
|
||||
EX AF,AF
|
||||
RET
|
||||
;----------------
|
||||
.volData:
|
||||
IF SND_VARIANT == 0
|
||||
DB 13,12,10,08,09,08,07,06
|
||||
DB 13,12,10,08,09,08,07,06
|
||||
DB 13,12,10,08,09,08,07,06
|
||||
DB 12,12,10,08,07,06,05,04
|
||||
DB 07,06,05,04,03,02,01,00
|
||||
DB 05,04,03,02,01,00,00,00
|
||||
DB 04,03,02,02,01,00,00,00
|
||||
DB 02,02,01,01,00,00,00,00
|
||||
;
|
||||
ELSEIF SND_VARIANT == 1
|
||||
DB 11,10,08,06,08,07,06,05
|
||||
DB 12,11,09,07,09,08,07,06
|
||||
DB 13,12,10,08,09,08,07,06
|
||||
DB 13,12,10,08,07,06,05,04
|
||||
DB 08,07,06,05,04,03,02,01
|
||||
DB 06,05,04,03,02,01,00,00
|
||||
DB 04,04,03,02,01,00,00,00
|
||||
DB 02,02,01,01,00,00,00,00
|
||||
;
|
||||
ELSEIF SND_VARIANT == 2
|
||||
DB 15,14,13,10,10,09,09,07
|
||||
DB 15,14,13,10,10,09,09,07
|
||||
DB 15,14,13,10,10,09,09,07
|
||||
DB 15,14,13,10,07,06,05,04
|
||||
DB 08,07,06,05,04,03,02,01
|
||||
DB 06,05,04,03,02,01,00,00
|
||||
DB 04,03,02,01,00,00,00,00
|
||||
ENDIF
|
||||
|
||||
|
||||
.sndData: DB 68,3,136,6,162,1
|
||||
DB 136,6,136,6,68,3
|
||||
DB 57,1,229,4,114,2
|
||||
DB 68,3,229,4,162,1
|
||||
DB 46,2,92,4,23,1
|
||||
DB 57,1,92,4,114,2
|
||||
DB 209,0,68,3,162,1
|
||||
DB 46,2,68,3,23,1
|
||||
DB 209,0,68,3,162,1
|
||||
|
||||
codeEnd: DISPLAY "StartUp Sound size: ",/A,codeEnd-codeBegin
|
||||
|
||||
ENDMODULE
|
||||
*/
|
||||
@ -17,6 +17,7 @@ BETA_RC EQU 2 ;
|
||||
DEFINE LOGO_DELAY_NORM 100 ;
|
||||
DEFINE LOGO_DELAY_MAX 130 ;
|
||||
;----------------------------[ TEST ]---------------------------;
|
||||
DEFINE STARTUP_SND 1 ;
|
||||
DEFINE ERROR_POST_5 0 ; ¢¨áãâì ®è¨¡ª¥ ¢ POST 5
|
||||
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ ⥫ì᪮£® INT
|
||||
DEFINE NEW_FEATURE 0 ; !TODO ¯ãªâë ¢ á¥â ¯
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user