тестирование задержек
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
|
; ‚室 ¢ äãªæ¨î ¯® RST18 ¨ RST8
|
||||||
EXP_FNS_RST18:
|
EXP_FNS_RST18: PUSH HL
|
||||||
PUSH HL
|
LD L,C
|
||||||
LD L,C
|
LD H,high TAB_FNS
|
||||||
LD H,high TAB_FNS
|
LD C,(HL)
|
||||||
LD C,(HL)
|
INC H
|
||||||
INC H
|
LD H,(HL)
|
||||||
LD H,(HL)
|
LD L,C
|
||||||
LD L,C
|
EX (SP),HL
|
||||||
EX (SP),HL
|
RET
|
||||||
RET
|
|
||||||
|
|
||||||
; ATA_5x_RESET
|
; ATA_5x_RESET
|
||||||
; ATA_5x_LONG_READ
|
; ATA_5x_LONG_READ
|
||||||
@ -704,50 +703,39 @@ EXP_FNS_RST18:
|
|||||||
; FN_RESERVED_5x
|
; FN_RESERVED_5x
|
||||||
; DRV_LIST
|
; DRV_LIST
|
||||||
|
|
||||||
FN_5x_Parser_1: ; ATA_5x_RESET
|
FN_5x_Parser_1: LD C,#01 ; ATA_5x_RESET
|
||||||
LD C,#01
|
JR FN_5x_Parser
|
||||||
JP FN_5x_Parser
|
FN_5x_Parser_2: LD C,#02 ; ATA_5x_LONG_READ
|
||||||
FN_5x_Parser_2: ; ATA_5x_LONG_READ
|
JR FN_5x_Parser
|
||||||
LD C,#02
|
FN_5x_Parser_3: LD C,#03 ; ATA_5x_LONG_WRITE
|
||||||
JP FN_5x_Parser
|
JR FN_5x_Parser
|
||||||
FN_5x_Parser_3: ; ATA_5x_LONG_WRITE
|
FN_5x_Parser_4: LD C,#04 ; ATA_5x_VERIFY
|
||||||
LD C,#03
|
JR FN_5x_Parser
|
||||||
JP FN_5x_Parser
|
FN_5x_Parser_6: LD C,#06 ; ATA_5x_WRITE
|
||||||
FN_5x_Parser_4: ; ATA_5x_VERIFY
|
JR FN_5x_Parser
|
||||||
LD C,#04
|
FN_5x_Parser_7: LD C,#07 ; ATA_5x_DETECT
|
||||||
JP FN_5x_Parser
|
JR FN_5x_Parser
|
||||||
FN_5x_Parser_6: ; ATA_5x_WRITE
|
FN_5x_Parser_8: LD C,#08 ; ATA_5x_GET_PAR
|
||||||
LD C,#06
|
JR FN_5x_Parser
|
||||||
JP FN_5x_Parser
|
FN_5x_Parser_9: LD C,#09 ; ATA_5x_SET_PAR
|
||||||
FN_5x_Parser_7: ; ATA_5x_DETECT
|
JR FN_5x_Parser
|
||||||
LD C,#07
|
FN_5x_Parser_E: LD C,#0E ; DRV_EXTENDED
|
||||||
JP FN_5x_Parser
|
JR FN_5x_Parser
|
||||||
FN_5x_Parser_8: ; ATA_5x_GET_PAR
|
FN_5x_Parser_5: LD C,5 ; ATA_5x_READ
|
||||||
LD C,#08
|
FN_5x_Parser: PUSH HL
|
||||||
JP FN_5x_Parser
|
LD H,A
|
||||||
FN_5x_Parser_9: ; ATA_5x_SET_PAR
|
AND #F0
|
||||||
LD C,#09
|
OR C
|
||||||
JP FN_5x_Parser
|
; âãâ ¢ A ®¬¥à “‘’<E28098>މ‘’‚€ + <20>ŽŒ…<C592> ”“<E2809D>Š–ˆˆ
|
||||||
FN_5x_Parser_E: ; DRV_EXTENDED
|
LD L,A
|
||||||
LD C,#0E
|
LD A,H
|
||||||
JP FN_5x_Parser
|
LD H,high TAB_5xFNS
|
||||||
FN_5x_Parser_5: ; ATA_5x_READ
|
LD C,(HL)
|
||||||
LD C,5
|
INC H
|
||||||
FN_5x_Parser:
|
LD H,(HL)
|
||||||
PUSH HL
|
LD L,C
|
||||||
LD H,A
|
EX (SP),HL
|
||||||
AND #F0
|
RET
|
||||||
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
|
; ‚室 ¢ äãªæ¨¨ <20>ˆŽ‘ ¨§ TR-DOS
|
||||||
EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ᯥªâàã¬
|
EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ᯥªâàã¬
|
||||||
|
|||||||
@ -767,7 +767,7 @@ POST_5_OK:
|
|||||||
; Don't use IY before this point if it`s normal booting!!!
|
; Don't use IY before this point if it`s normal booting!!!
|
||||||
LD IX,0
|
LD IX,0
|
||||||
XOR A
|
XOR A
|
||||||
ADD IX,SP ; ¢®ááâ ®¢¨âì § 票¥ ¯¥à¥¤ ®¥ § £àã§ç¨ª®¬ ª®äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
|
ADD IX,SP ; ¢®ááâ ®¢¨âì § 票¥ ¯¥à¥¤ ®¥ § £àã§ç¨ª®¬ ª®äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
|
||||||
; ‚ í⮬ ¬¥á⥠ã á IX:IY ¨§ Loader.asm
|
; ‚ í⮬ ¬¥á⥠ã á IX:IY ¨§ Loader.asm
|
||||||
; „®â 騫¨ ¤® áî¤ ¬¥âªã ®â «® ¤¥à
|
; „®â 騫¨ ¤® áî¤ ¬¥âªã ®â «® ¤¥à
|
||||||
;[x] 31/12/2023 ¯®¤áâà 客ª ®â ¥¤®ãâ¥çª¨ ¯ ¬ïâ¨
|
;[x] 31/12/2023 ¯®¤áâà 客ª ®â ¥¤®ãâ¥çª¨ ¯ ¬ïâ¨
|
||||||
@ -788,7 +788,7 @@ POST_5_OK:
|
|||||||
JR NZ,.no_conf_reload
|
JR NZ,.no_conf_reload
|
||||||
LD A,#80
|
LD A,#80
|
||||||
.no_conf_reload:
|
.no_conf_reload:
|
||||||
LD R,A ; reg R bit7 - ¯à¨§ ª à ¡®âë «® ¤¥à
|
LD R,A ; reg R bit7 - ¯à¨§ ª § ¯ãáª á ®âà ¡®âª®© «® ¤¥à ª®äë
|
||||||
;
|
;
|
||||||
; ¢á直© á«ãç ©
|
; ¢á直© á«ãç ©
|
||||||
LD HL,ACEX.Config_ID.Sp2000
|
LD HL,ACEX.Config_ID.Sp2000
|
||||||
@ -881,24 +881,24 @@ No_Reset_handlers:
|
|||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
MODULE Prepare_For_Setup
|
MODULE Prepare_For_Setup
|
||||||
Set_ALL_Mode: LD A,Port_All_Mode.DEFAULT
|
Set_ALL_Mode: LD A,Port_All_Mode.DEFAULT
|
||||||
LD BC,Port_All_Mode
|
LD BC,Port_All_Mode
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
Set_Default_Screen:
|
Set_Default_Screen:
|
||||||
CALL FN_SYNC.INT_DEF ; set default int
|
CALL FN_SYNC.INT_DEF ; set default int
|
||||||
ld a,128+4 ; !HARDCODE
|
LD A,128+4 ; !HARDCODE
|
||||||
CALL FN_SYNC ; set default vsync
|
CALL FN_SYNC ; set default vsync
|
||||||
Setup_to_RAM: LD HL,Setup_Starter.Start
|
Setup_to_RAM: LD HL,Setup_Starter.Start
|
||||||
LD DE,COMPILE_ADDR.SETUP_STARTER
|
LD DE,COMPILE_ADDR.SETUP_STARTER
|
||||||
LD BC,Setup_Starter.Size
|
LD BC,Setup_Starter.Size
|
||||||
LDIR
|
LDIR
|
||||||
; á⥪ ª« ¤ñâáï ¤à¥á ¢®§¢à â ¨ ¤ «ìè¥ â é¨âáï ¢á直¬¨ ª®áâë«ï¬¨, ç⮡ ¢¥àãâìáï § ¤
|
; á⥪ ª« ¤ñâáï ¤à¥á ¢®§¢à â ¨ ¤ «ìè¥ â é¨âáï ¢á直¬¨ ª®áâë«ï¬¨, ç⮡ ¢¥àãâìáï § ¤
|
||||||
CALL Setup_Starter.Exec ; #C000
|
CALL Setup_Starter.Exec ; #C000
|
||||||
;JP PrepareToZX
|
;JP PrepareToZX
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
|
|
||||||
PrepareToZX: ; Setup HDD drives for ZX Spectrum mode
|
;PrepareToZX: ; Setup HDD drives for ZX Spectrum mode
|
||||||
; DI
|
; DI
|
||||||
; LD D,CMOS_CELL.TRDOSmount
|
; LD D,CMOS_CELL.TRDOSmount
|
||||||
; CALL CMOS_RD
|
; CALL CMOS_RD
|
||||||
@ -1052,8 +1052,8 @@ PORTS_INIT:
|
|||||||
OUT (C),A
|
OUT (C),A
|
||||||
; £«ã訬 ª®¢®ªá
|
; £«ã訬 ª®¢®ªá
|
||||||
XOR A
|
XOR A
|
||||||
OUT (CBL.SYS_PORT),A
|
OUT (SP_SND.CBL.SYS_PORT),A
|
||||||
LD BC,CBL.OUT
|
LD BC,SP_SND.CBL.OUT
|
||||||
LD A,#80
|
LD A,#80
|
||||||
.CBL_MUTE: OUT (C),A
|
.CBL_MUTE: OUT (C),A
|
||||||
DJNZ .CBL_MUTE
|
DJNZ .CBL_MUTE
|
||||||
@ -1556,7 +1556,7 @@ BEEP: LD A,#10
|
|||||||
JR NZ,BEEP
|
JR NZ,BEEP
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.beep_loop: OUT (ZX_Beeper),A
|
.beep_loop: OUT (SP_SND.Beeper),A
|
||||||
LD B,D
|
LD B,D
|
||||||
LD C,E
|
LD C,E
|
||||||
;
|
;
|
||||||
|
|||||||
@ -181,7 +181,7 @@ ATAPI_5x_READ: ;PUSH IY ; !FIXIT
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JP ATAPI_5x_LONG_READ.main
|
JR ATAPI_5x_LONG_READ.main
|
||||||
;[]================================================================[#52]
|
;[]================================================================[#52]
|
||||||
;Function: Long Read Sectors
|
;Function: Long Read Sectors
|
||||||
; A - Disk
|
; A - Disk
|
||||||
@ -198,17 +198,19 @@ ATAPI_5x_LONG_READ:
|
|||||||
;
|
;
|
||||||
;PUSH IY ; !FIXIT § 祬?
|
;PUSH IY ; !FIXIT § 祬?
|
||||||
LD C,1 ; ¯à¨§ ª long
|
LD C,1 ; ¯à¨§ ª long
|
||||||
.main: SAFE_PORTY_2
|
.main: EX AF,AF'
|
||||||
PUSH BC
|
AND A ;read
|
||||||
PUSH IX
|
EX AF,AF'
|
||||||
PUSH HL
|
JR ATAPI_BEGIN_RW
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
; SAFE_PORTY_2
|
||||||
AND A ;read
|
; PUSH BC
|
||||||
EX AF,AF'
|
; PUSH IX
|
||||||
CALL RW_ATAPI_SECTORs
|
; PUSH HL
|
||||||
; [ ] sector size. media changed
|
; ;
|
||||||
JP ATA_5x_LONG_READ.shared
|
; CALL RW_ATAPI_SECTORs
|
||||||
|
; ; [ ] sector size. media changed
|
||||||
|
; JP ATA_5x_LONG_READ.shared
|
||||||
; JP NC,ATA_5x_LONG_READ.shared
|
; JP NC,ATA_5x_LONG_READ.shared
|
||||||
; CP BIOS.Error.UnitAttention
|
; CP BIOS.Error.UnitAttention
|
||||||
; JR Z,ATAPI_MEDIA_ERROR
|
; JR Z,ATAPI_MEDIA_ERROR
|
||||||
@ -278,6 +280,15 @@ RW_ATAPI_SECTORs:
|
|||||||
|
|
||||||
;[]===========================================================[#52, #55]
|
;[]===========================================================[#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]
|
;[]================================================================[#56]
|
||||||
;Function: Write Sectors
|
;Function: Write Sectors
|
||||||
; A - Disk
|
; A - Disk
|
||||||
@ -289,11 +300,14 @@ RW_ATAPI_SECTORs:
|
|||||||
; DE - Address + (Sector counter * Size sector)
|
; DE - Address + (Sector counter * Size sector)
|
||||||
;WRITE SECTOR(S)
|
;WRITE SECTOR(S)
|
||||||
ATAPI_5x_WRITE: ;PUSH IY ; !FIXIT § 祬?
|
ATAPI_5x_WRITE: ;PUSH IY ; !FIXIT § 祬?
|
||||||
LD C,0 ; ¯à¨§ ª short
|
; ¯à®¡ ¡ £
|
||||||
|
LD C,0 ; ¯à¨§ ª short
|
||||||
|
;LD C,1 ; ¯à¨§ ª long
|
||||||
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JP ATAPI_5x_LONG_WRITE.main
|
JR ATAPI_5x_LONG_WRITE.main
|
||||||
;[]================================================================[#53]
|
;[]================================================================[#53]
|
||||||
;Function: Long Write Sectors
|
;Function: Long Write Sectors
|
||||||
; A - Disk
|
; A - Disk
|
||||||
@ -310,17 +324,19 @@ ATAPI_5x_LONG_WRITE:
|
|||||||
;
|
;
|
||||||
;PUSH IY ; !FIXIT § 祬?
|
;PUSH IY ; !FIXIT § 祬?
|
||||||
LD C,1 ; ¯à¨§ ª long
|
LD C,1 ; ¯à¨§ ª long
|
||||||
.main: SAFE_PORTY_2
|
.main: EX AF,AF'
|
||||||
PUSH BC
|
SCF ;write
|
||||||
PUSH IX
|
EX AF,AF'
|
||||||
PUSH HL
|
JR ATAPI_BEGIN_RW
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
; SAFE_PORTY_2
|
||||||
SCF ;write
|
; PUSH BC
|
||||||
EX AF,AF'
|
; PUSH IX
|
||||||
CALL RW_ATAPI_SECTORs
|
; PUSH HL
|
||||||
;
|
; ;
|
||||||
JP ATA_5x_LONG_READ.shared
|
; CALL RW_ATAPI_SECTORs
|
||||||
|
; ;
|
||||||
|
; JP ATA_5x_LONG_READ.shared
|
||||||
|
|
||||||
;[]================================================================[#57]
|
;[]================================================================[#57]
|
||||||
;Function: Detect Disk
|
;Function: Detect Disk
|
||||||
@ -607,9 +623,10 @@ EXEC_PACKET_COMMAND:
|
|||||||
;
|
;
|
||||||
POP BC
|
POP BC
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
;
|
; pause
|
||||||
LD B,#80
|
LD B,0
|
||||||
.pause2: DJNZ .pause2
|
DJNZ $
|
||||||
|
; DJNZ $
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD XH,A ; áâà ¨æ ¤«ï R/W_LONG
|
LD XH,A ; áâà ¨æ ¤«ï R/W_LONG
|
||||||
@ -617,7 +634,9 @@ EXEC_PACKET_COMMAND:
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
;
|
;
|
||||||
.AP_LOOP: CALL ATAPI_CHECK_DRV
|
.AP_LOOP: ;LD B,128
|
||||||
|
;DJNZ $
|
||||||
|
CALL ATAPI_CHECK_DRV
|
||||||
JP C,.error;_APLOOP
|
JP C,.error;_APLOOP
|
||||||
RET Z
|
RET Z
|
||||||
;====== IF DATA REQUEST ===============================================;
|
;====== IF DATA REQUEST ===============================================;
|
||||||
@ -626,23 +645,6 @@ EXEC_PACKET_COMMAND:
|
|||||||
;
|
;
|
||||||
LD A,XH
|
LD A,XH
|
||||||
OUT (SLOT3),A
|
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
|
CALL ATAPI_PREPARE_RW
|
||||||
RET NC
|
RET NC
|
||||||
JR Z,.WRITE_DATA
|
JR Z,.WRITE_DATA
|
||||||
@ -688,24 +690,7 @@ ATAPI_IdlePasses:
|
|||||||
JP C,EXEC_PACKET_COMMAND.error
|
JP C,EXEC_PACKET_COMMAND.error
|
||||||
JP Z,EXEC_PACKET_COMMAND.error_fail
|
JP Z,EXEC_PACKET_COMMAND.error_fail
|
||||||
;
|
;
|
||||||
.Enter: ;LD BC,IDE.Read.ByteCountLow
|
.Enter: CALL ATAPI_PREPARE_RW
|
||||||
;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
|
RET NC
|
||||||
JR Z,.write_data
|
JR Z,.write_data
|
||||||
;
|
;
|
||||||
@ -737,6 +722,7 @@ ATAPI_IdlePasses:
|
|||||||
ATAPI_CHECK_DRV:
|
ATAPI_CHECK_DRV:
|
||||||
;EX DE,HL
|
;EX DE,HL
|
||||||
EXX
|
EXX
|
||||||
|
;CALL .zeroWait
|
||||||
CALL ATAPI_WAITPRT
|
CALL ATAPI_WAITPRT
|
||||||
EXX
|
EXX
|
||||||
; ZF=1
|
; ZF=1
|
||||||
@ -764,9 +750,25 @@ ATAPI_CHECK_DRV:
|
|||||||
JP Z,ATAPI_MEDIA_ERROR
|
JP Z,ATAPI_MEDIA_ERROR
|
||||||
CP BIOS.Error.ATAPI.UnitAttention
|
CP BIOS.Error.ATAPI.UnitAttention
|
||||||
JP Z,ATAPI_MEDIA_ERROR
|
JP Z,ATAPI_MEDIA_ERROR
|
||||||
|
;
|
||||||
|
;CP BIOS.Error.ATAPI.IllegalRequest
|
||||||
|
;RET Z
|
||||||
|
;
|
||||||
SCF
|
SCF
|
||||||
RET
|
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:
|
ATAPI_PREPARE_RW:
|
||||||
LD BC,IDE.Read.ByteCountLow
|
LD BC,IDE.Read.ByteCountLow
|
||||||
@ -836,9 +838,9 @@ ATAPI_GET_ERROR_REG:
|
|||||||
; !!! ¥ª®â®àë¥ äãªæ¨¨ ¤¥îâáï, çâ® ¢ë室¥ ¢á¥£¤ ZF
|
; !!! ¥ª®â®àë¥ äãªæ¨¨ ¤¥îâáï, çâ® ¢ë室¥ ¢á¥£¤ ZF
|
||||||
; ¥ ¤®«¦ âண âì ॣ. C
|
; ¥ ¤®«¦ âண âì ॣ. C
|
||||||
ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
|
ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
|
||||||
.Custom: LD B,100
|
.Custom: LD B,6 ; 3 = ®¡é ï § ¤¥à¦ª ®ª®«® ᥪã¤ë
|
||||||
LD HL,#0000
|
LD HL,#0000
|
||||||
;
|
; 4ÿ128ÿ768
|
||||||
.LOOP: LD A,high IDE.Read.Status
|
.LOOP: LD A,high IDE.Read.Status
|
||||||
IN A,(low IDE.Read.Status)
|
IN A,(low IDE.Read.Status)
|
||||||
CP #FF
|
CP #FF
|
||||||
@ -852,13 +854,59 @@ ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
|
|||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
JR NZ,.LOOP
|
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
|
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
|
LD A,BIOS.Error.Busy
|
||||||
|
RET
|
||||||
|
;
|
||||||
.error: SCF
|
.error: SCF
|
||||||
RET
|
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
|
; DE - buffer
|
||||||
ATAPI_READ_CAPACITY_DATA:
|
ATAPI_READ_CAPACITY_DATA:
|
||||||
|
|||||||
@ -119,7 +119,7 @@ RESERVED_PAGES: ;[x] free zx pages!
|
|||||||
DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F
|
DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F
|
||||||
;
|
;
|
||||||
;DB MODE_PAGE ; ?????
|
;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 SYS_PAGE ; Page for system (BIOS) variables
|
||||||
DB #FF ; End of the block
|
DB #FF ; End of the block
|
||||||
;
|
;
|
||||||
|
|||||||
@ -72,7 +72,7 @@ RST_CONF:
|
|||||||
LD A,#80
|
LD A,#80
|
||||||
JR Z,.YES_CBL
|
JR Z,.YES_CBL
|
||||||
XOR A
|
XOR A
|
||||||
.YES_CBL: LD BC,CBL.SYS_PORT
|
.YES_CBL: LD BC,SP_SND.CBL.SYS_PORT
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
;
|
;
|
||||||
LD A,E ; config-byte
|
LD A,E ; config-byte
|
||||||
|
|||||||
@ -163,12 +163,10 @@ EMM.CheckColdInit:
|
|||||||
INC HL
|
INC HL
|
||||||
INC DE
|
INC DE
|
||||||
DJNZ .loop
|
DJNZ .loop
|
||||||
|
|
||||||
; Disable user IM address in SYS_PAGE
|
; Disable user IM address in SYS_PAGE
|
||||||
XOR A
|
XOR A
|
||||||
LD (SYS_PAGE.INT_ID - #4000),A
|
LD (SYS_PAGE.INT_ID - #4000),A
|
||||||
;
|
;
|
||||||
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
RET
|
RET
|
||||||
|
|||||||
@ -397,7 +397,8 @@ SETUP_FROM_CMOS:
|
|||||||
; RET
|
; RET
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
IDESPEC: IN A,(SLOT3)
|
PARSE_IdentifyDevice:
|
||||||
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -440,11 +441,7 @@ IDESPEC: IN A,(SLOT3)
|
|||||||
;
|
;
|
||||||
LD A,(IDENTIFY_DEVICE_BUFFER.NumSectorsPerTrack)
|
LD A,(IDENTIFY_DEVICE_BUFFER.NumSectorsPerTrack)
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),A
|
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),A
|
||||||
IF IDE_Optimization
|
LD B,high IDE.Write.Counter
|
||||||
LD B,high IDE.Write.Counter
|
|
||||||
ELSE
|
|
||||||
LD BC,IDE.Write.Counter
|
|
||||||
ENDIF
|
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD A,IDE.CMD.ATA.InitializeDeviceParameters
|
LD A,IDE.CMD.ATA.InitializeDeviceParameters
|
||||||
CALL IDE_CMD
|
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.SectorsPerCylinderLow),L
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
|
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
|
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) ; for save to cmos in GETPARM
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -474,6 +472,8 @@ IDESPEC: IN A,(SLOT3)
|
|||||||
LD HL,ICHANEL
|
LD HL,ICHANEL
|
||||||
OR (HL)
|
OR (HL)
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
|
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
|
||||||
|
;
|
||||||
|
;
|
||||||
; ¢á直© á«ãç ©
|
; ¢á直© á«ãç ©
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
||||||
LD B,100 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
LD B,100 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
||||||
@ -484,9 +484,10 @@ IDESPEC: IN A,(SLOT3)
|
|||||||
POP BC
|
POP BC
|
||||||
JR NC,.s_size
|
JR NC,.s_size
|
||||||
;
|
;
|
||||||
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
|
||||||
CP BIOS.Error.ATAPI.UnitAttention
|
CP BIOS.Error.ATAPI.UnitAttention
|
||||||
JR Z,IDESPEC.END
|
JR Z,PARSE_IdentifyDevice.END ;!TEST ;!FIXIT ZIP bug
|
||||||
|
;JR Z,.TEST_SET
|
||||||
|
|
||||||
;
|
;
|
||||||
HALT
|
HALT
|
||||||
DJNZ .get_error_loop
|
DJNZ .get_error_loop
|
||||||
@ -508,9 +509,59 @@ IDESPEC: IN A,(SLOT3)
|
|||||||
;
|
;
|
||||||
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H
|
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
|
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
|
LD HL,IDENTIFY_DEVICE_BUFFER
|
||||||
INIR
|
INIR
|
||||||
INIR
|
INIR
|
||||||
CALL IDESPEC
|
CALL PARSE_IdentifyDevice
|
||||||
; [x] save hdd parameters to cmos for "setup" in settings
|
; [x] save hdd parameters to cmos for "setup" in settings
|
||||||
CALL SaveToCMOS
|
CALL SaveToCMOS
|
||||||
AND A
|
AND A
|
||||||
|
|||||||
@ -17,32 +17,38 @@ INT_POINTER: WORD 0
|
|||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
INT_HANDLER:
|
INT_HANDLER: PUSH AF
|
||||||
PUSH AF
|
EX AF,AF'
|
||||||
EX AF,AF'
|
PUSH AF
|
||||||
PUSH AF
|
PUSH BC
|
||||||
PUSH BC
|
PUSH DE
|
||||||
PUSH DE
|
PUSH HL
|
||||||
PUSH HL
|
EXX
|
||||||
EXX
|
PUSH BC
|
||||||
PUSH BC
|
PUSH DE
|
||||||
PUSH DE
|
PUSH HL
|
||||||
PUSH HL
|
PUSH IX
|
||||||
PUSH IX
|
PUSH IY
|
||||||
PUSH IY
|
CALL KEYSCAN
|
||||||
CALL KEYSCAN
|
;
|
||||||
POP IY
|
IF STARTUP_SND
|
||||||
POP IX
|
SCF
|
||||||
POP HL
|
.sndSwitch: CCF ; SCF/CCF
|
||||||
POP DE
|
CALL C,STARTUP_SOUND
|
||||||
POP BC
|
ENDIF
|
||||||
EXX
|
;
|
||||||
POP HL
|
POP IY
|
||||||
POP DE
|
POP IX
|
||||||
POP BC
|
POP HL
|
||||||
POP AF
|
POP DE
|
||||||
EX AF,AF'
|
POP BC
|
||||||
POP AF
|
EXX
|
||||||
EI
|
POP HL
|
||||||
RETI
|
POP DE
|
||||||
|
POP BC
|
||||||
|
POP AF
|
||||||
|
EX AF,AF'
|
||||||
|
POP AF
|
||||||
|
EI
|
||||||
|
RETI
|
||||||
;
|
;
|
||||||
@ -554,15 +554,17 @@ RESTART_ID:
|
|||||||
.str: DZ "RESTART"
|
.str: DZ "RESTART"
|
||||||
.size EQU $ - RESTART_ID.str
|
.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
|
; LD C,#97
|
||||||
; RST_to_BIOS_18
|
; RST_to_BIOS_18
|
||||||
; XOR A
|
; XOR A
|
||||||
@ -1598,7 +1600,9 @@ ElementsBuffer:
|
|||||||
.DownCenter: BYTE "Á" ; DC - DownCenter
|
.DownCenter: BYTE "Á" ; DC - DownCenter
|
||||||
.Size EQU $-ElementsBuffer
|
.Size EQU $-ElementsBuffer
|
||||||
;
|
;
|
||||||
|
IF STARTUP_SND
|
||||||
|
INCLUDE 'startup_sound.asm'
|
||||||
|
ENDIF
|
||||||
INCLUDE 'VIDEO_IO.asm'
|
INCLUDE 'VIDEO_IO.asm'
|
||||||
INCLUDE 'AUTOIDE.asm'
|
INCLUDE 'AUTOIDE.asm'
|
||||||
INCLUDE 'SETTINGS.asm'
|
INCLUDE 'SETTINGS.asm'
|
||||||
|
|||||||
@ -290,22 +290,33 @@ PRSYM: LD B,1
|
|||||||
//////////////////// LOGO \\\\\\\\\\\\\\\\\\\\
|
//////////////////// LOGO \\\\\\\\\\\\\\\\\\\\
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
LOGOTYPE: CALL SHOW_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
|
LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay
|
||||||
CALL GET_CMOS_VALUE
|
CALL GET_CMOS_VALUE
|
||||||
OR A
|
OR A
|
||||||
JR Z,.EASYDLY ; Delay average
|
JR Z,.MinDelay
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,.SKIPDLY ; Delay disabled
|
JR Z,.AverageDelay
|
||||||
; Delay enabled
|
; Delay enabled
|
||||||
LD B,LOGO_DELAY_NORM
|
LD B,LOGO_DELAY_NORM
|
||||||
.loop EI
|
.loop EI
|
||||||
push bc
|
push bc
|
||||||
HALT
|
HALT
|
||||||
CALL go_setup
|
CALL go_setup
|
||||||
pop bc
|
pop bc
|
||||||
DJNZ .loop
|
DJNZ .loop
|
||||||
; Delay average
|
; Delay average
|
||||||
.SKIPDLY: LD B,LOGO_DELAY_MAX
|
.AverageDelay: LD B,LOGO_DELAY_MAX
|
||||||
.MMA: PUSH BC
|
.MMA: PUSH BC
|
||||||
EI
|
EI
|
||||||
HALT
|
HALT
|
||||||
@ -323,12 +334,17 @@ LOGOTYPE: CALL SHOW_LOGO
|
|||||||
DI
|
DI
|
||||||
CALL WIN_OPEN.SCR1
|
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 DE,0
|
||||||
LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE
|
LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE
|
||||||
LD B,7
|
LD B,7
|
||||||
JP LP_CLS_WIN
|
JP LP_CLS_WIN
|
||||||
; Delay disabled
|
; Delay disabled
|
||||||
.EASYDLY: LD B,LOGO_DELAY_MIN
|
.MinDelay: LD B,LOGO_DELAY_MIN
|
||||||
.loop2: EI
|
.loop2: EI
|
||||||
HALT
|
HALT
|
||||||
DJNZ .loop2
|
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_NORM 100 ;
|
||||||
DEFINE LOGO_DELAY_MAX 130 ;
|
DEFINE LOGO_DELAY_MAX 130 ;
|
||||||
;----------------------------[ TEST ]---------------------------;
|
;----------------------------[ TEST ]---------------------------;
|
||||||
|
DEFINE STARTUP_SND 1 ;
|
||||||
DEFINE ERROR_POST_5 0 ; ¢¨áãâì ®è¨¡ª¥ ¢ POST 5
|
DEFINE ERROR_POST_5 0 ; ¢¨áãâì ®è¨¡ª¥ ¢ POST 5
|
||||||
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ ⥫ì᪮£® INT
|
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ ⥫ì᪮£® INT
|
||||||
DEFINE NEW_FEATURE 0 ; !TODO ¯ãªâë ¢ á¥â ¯
|
DEFINE NEW_FEATURE 0 ; !TODO ¯ãªâë ¢ á¥â ¯
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user