чёт понаковырял
This commit is contained in:
parent
43c7b859c2
commit
ee0a29a034
@ -1 +1 @@
|
|||||||
Subproject commit 51026c3fd8d5614706b5ed1214c4be8ffcdd73e6
|
Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3
|
||||||
Binary file not shown.
@ -638,6 +638,8 @@ SET_PORTS:
|
|||||||
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
;
|
;
|
||||||
|
CALL DOS_OFF
|
||||||
|
;
|
||||||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||||||
POP AF
|
POP AF
|
||||||
RET PO
|
RET PO
|
||||||
|
|||||||
@ -772,7 +772,6 @@ set_config:
|
|||||||
XOR A
|
XOR A
|
||||||
OUT (BorderColor),A
|
OUT (BorderColor),A
|
||||||
CALL EMM.CheckColdInit ; ¨¨æ¨ «¨§ æ¨ï ¯ ¬ïâ¨
|
CALL EMM.CheckColdInit ; ¨¨æ¨ «¨§ æ¨ï ¯ ¬ïâ¨
|
||||||
|
|
||||||
POP HL ; ª®ä¨£ãà æ¨ï
|
POP HL ; ª®ä¨£ãà æ¨ï
|
||||||
JR Reset_Handler.start
|
JR Reset_Handler.start
|
||||||
; *************************************
|
; *************************************
|
||||||
@ -1598,6 +1597,8 @@ DOS_ON: NOP
|
|||||||
;***************************************
|
;***************************************
|
||||||
_mInfoBLOCK #3E00-$,#FF
|
_mInfoBLOCK #3E00-$,#FF
|
||||||
DOS_OFF:
|
DOS_OFF:
|
||||||
|
PUSH AF
|
||||||
|
LD A,R
|
||||||
DI
|
DI
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH BC
|
PUSH BC
|
||||||
@ -1608,6 +1609,9 @@ DOS_OFF:
|
|||||||
LD (#5BFF),BC ; !HARDCODE
|
LD (#5BFF),BC ; !HARDCODE
|
||||||
POP BC
|
POP BC
|
||||||
POP AF
|
POP AF
|
||||||
|
JP PO,.no_EI
|
||||||
|
EI
|
||||||
|
.no_EI: POP AF
|
||||||
RET
|
RET
|
||||||
;***************************************
|
;***************************************
|
||||||
|
|
||||||
|
|||||||
@ -233,14 +233,13 @@ RST8RDR: RESTORE_PORTY
|
|||||||
POP IY
|
POP IY
|
||||||
;EX AF,AF' ;!TEST 21/11/23
|
;EX AF,AF' ;!TEST 21/11/23
|
||||||
RET
|
RET
|
||||||
;READ SECTOR(S)
|
|
||||||
RDS000:
|
;READ SECTOR(S)
|
||||||
LD C,IDE.Device.HDD
|
RDS000: LD C,IDE.Device.HDD
|
||||||
CALL SELECT_DRIVE
|
CALL SELECT_DRIVE
|
||||||
RET C
|
RET C
|
||||||
EXX
|
EXX
|
||||||
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
||||||
;LD BC,IDE.Read.Status
|
|
||||||
CALL WAITPRT
|
CALL WAITPRT
|
||||||
EXX
|
EXX
|
||||||
RET C
|
RET C
|
||||||
|
|||||||
@ -350,7 +350,7 @@ FN_HDD_RECAL:
|
|||||||
FN_HDD_TEST_IDE:
|
FN_HDD_TEST_IDE:
|
||||||
LD E,#00
|
LD E,#00
|
||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
LD A,#A0 ; !!!!! £«ïãâì
|
LD A,IDE.Drive.Master
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
CALL TEST_HDD_DRV
|
CALL TEST_HDD_DRV
|
||||||
@ -359,7 +359,7 @@ FN_HDD_TEST_IDE:
|
|||||||
SET 0,E
|
SET 0,E
|
||||||
NO_HDD1:
|
NO_HDD1:
|
||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
LD A,#B0 ; !!!!! £«ïãâì
|
LD A,IDE.Drive.Slave
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
CALL TEST_HDD_DRV
|
CALL TEST_HDD_DRV
|
||||||
@ -442,31 +442,27 @@ FN_HDD_INIT:
|
|||||||
LD A,IDE.Drive.Master
|
LD A,IDE.Drive.Master
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
CALL TEST_HDD_DRV
|
CALL TEST_HDD_DRV
|
||||||
JR NZ,HD_ABSENT
|
JR NZ,.ABSENT
|
||||||
HD_C0_L3:
|
;
|
||||||
WAIT_HDD
|
.L3: WAIT_HDD
|
||||||
|
|
||||||
LD BC,IDE.Write.Command
|
LD BC,IDE.Write.Command
|
||||||
LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì
|
LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
|
|
||||||
BIT IDE.ControlBit.DataRequest,A
|
BIT IDE.ControlBit.DataRequest,A
|
||||||
JR NZ,HD_C0_L2
|
JR NZ,.L2
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
HD_ABSENT:
|
.ABSENT:
|
||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
LD A,#B0 ; !HARDCODE
|
LD A,IDE.Drive.Slave
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
CALL TEST_HDD_DRV
|
CALL TEST_HDD_DRV
|
||||||
JR Z,HD_C0_L3
|
JR Z,.L3
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
HD_C0_L2:
|
.L2: LD BC,IDE.Read.Data
|
||||||
LD BC,IDE.Read.Data
|
|
||||||
LD HL,SYS_PAGE.HD_IDF_ADR
|
LD HL,SYS_PAGE.HD_IDF_ADR
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
LD D,A
|
LD D,A
|
||||||
@ -474,51 +470,46 @@ HD_C0_L2:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
INIR
|
INIR
|
||||||
INIR
|
INIR
|
||||||
|
; B = 0
|
||||||
|
LD H,B
|
||||||
|
LD L,B
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
||||||
LD C,A
|
LD C,A
|
||||||
LD HL,0
|
;LD HL,0
|
||||||
LD B,H
|
;LD B,H
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
||||||
.loop:
|
.loop: ADD HL,BC
|
||||||
ADD HL,BC
|
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,.loop
|
JR NZ,.loop
|
||||||
LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL
|
LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL
|
||||||
|
|
||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
|
|
||||||
LD BC,IDE.Read.Control
|
LD BC,IDE.Read.Control
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
AND #10
|
AND #10
|
||||||
LD B,A
|
LD B,A
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
||||||
|
|
||||||
DEC A
|
DEC A
|
||||||
AND #0F
|
AND #0F
|
||||||
OR #A0
|
OR IDE.Drive.Master
|
||||||
OR B
|
OR B
|
||||||
|
|
||||||
LD H,A
|
LD H,A
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR+99) ; !HARDCODE ç¥à¥§ áâàãªâãàã!
|
LD A,(SYS_PAGE.HD_IDF_ADR.LBA_CHS)
|
||||||
BIT 1,A
|
;BIT 1,A
|
||||||
JR Z,HD_C0_NO_LBA
|
AND %0000'0010
|
||||||
|
JR Z,.NO_LBA
|
||||||
SET 6,H
|
SET 6,H
|
||||||
|
.NO_LBA:
|
||||||
HD_C0_NO_LBA:
|
|
||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),H
|
OUT (C),H
|
||||||
|
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
||||||
|
|
||||||
LD BC,IDE.Write.Counter
|
LD BC,IDE.Write.Counter
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD A,D
|
LD A,D
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS
|
LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS
|
||||||
CALL HD_CMD_EXE
|
;CALL HD_CMD_EXE
|
||||||
RET
|
;RET
|
||||||
|
|
||||||
HD_CMD_EXE:
|
HD_CMD_EXE:
|
||||||
CALL HD_WAIT
|
CALL HD_WAIT
|
||||||
RET C
|
RET C
|
||||||
@ -550,40 +541,38 @@ HD_W_EXIT:
|
|||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
/*
|
|
||||||
;EXTENDED.ASM Version
|
|
||||||
|
|
||||||
HDD_LBA: ;???!!!!
|
; ;EXTENDED.ASM Version
|
||||||
POP BC
|
; HDD_LBA: ;???!!!!
|
||||||
LD L,E
|
|
||||||
LD E,D
|
|
||||||
LD D,XL
|
|
||||||
XOR A
|
|
||||||
LD H,A
|
|
||||||
RET
|
|
||||||
|
|
||||||
HD_CALC_SECS:
|
|
||||||
LD A,XH
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD
|
|
||||||
|
|
||||||
PUSH BC
|
|
||||||
LD BC,IDE.Write.DeviceHead
|
|
||||||
DEC B
|
|
||||||
IN A,(C)
|
|
||||||
BIT 6,A
|
|
||||||
JR NZ,HDD_LBA
|
|
||||||
; POP BC
|
; POP BC
|
||||||
*/
|
; LD L,E
|
||||||
|
; LD E,D
|
||||||
|
; LD D,XL
|
||||||
|
; XOR A
|
||||||
|
; LD H,A
|
||||||
|
; RET
|
||||||
|
; HD_CALC_SECS:
|
||||||
|
; LD A,XH
|
||||||
|
; AND A
|
||||||
|
; SCF
|
||||||
|
; RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD
|
||||||
|
|
||||||
|
; PUSH BC
|
||||||
|
; LD BC,IDE.Write.DeviceHead
|
||||||
|
; DEC B
|
||||||
|
; IN A,(C)
|
||||||
|
; BIT 6,A
|
||||||
|
; JR NZ,HDD_LBA
|
||||||
|
; ; POP BC
|
||||||
|
|
||||||
|
|
||||||
;EXP_HDD.ASM Version
|
;EXP_HDD.ASM Version
|
||||||
HD_CALC_SECS:
|
HD_CALC_SECS:
|
||||||
;PUSH BC
|
PUSH BC
|
||||||
LD BC,IDE.Read.Control
|
LD BC,IDE.Read.Control
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
AND %0100'0000
|
AND %0100'0000
|
||||||
;POP BC
|
POP BC
|
||||||
JR Z,.CHS
|
JR Z,.CHS
|
||||||
; LBA
|
; LBA
|
||||||
LD L,E
|
LD L,E
|
||||||
@ -632,13 +621,13 @@ HD_CALC_SECS:
|
|||||||
.DIV_END:
|
.DIV_END:
|
||||||
; DE - १ã«ìâ â, HL - ®áâ ⮪
|
; DE - १ã«ìâ â, HL - ®áâ ⮪
|
||||||
; DE - 樫¨¤à
|
; DE - 樫¨¤à
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR+12) ; !HARDCODE .sectors
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
|
||||||
; A - ç¨á«® ᥪâ®à®¢ ¤®à®¦ª¥
|
; A - ç¨á«® ᥪâ®à®¢ ¤®à®¦ª¥
|
||||||
; HL - ®¬¥à ᥪâ®à ¢ 樫¨¤à¥
|
; HL - ®¬¥à ᥪâ®à ¢ 樫¨¤à¥
|
||||||
LD B,0
|
|
||||||
LD C,A
|
LD C,A
|
||||||
;LD BC,(MS_BPB+S_P_T) ; —ˆ‘‹Ž ‘…Š’Ž<E28099>Ž‚ <20>€ „Ž<E2809E>ކЅ
|
;LD BC,(MS_BPB+S_P_T) ; —ˆ‘‹Ž ‘…Š’Ž<E28099>Ž‚ <20>€ „Ž<E2809E>ކЅ
|
||||||
XOR A
|
XOR A
|
||||||
|
LD B,A
|
||||||
.LOOP: SBC HL,BC
|
.LOOP: SBC HL,BC
|
||||||
INC A
|
INC A
|
||||||
JR NC,.LOOP
|
JR NC,.LOOP
|
||||||
@ -653,16 +642,60 @@ HD_CALC_SECS:
|
|||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
; [ ] 07/01/2024 bit0: Primary/Secondary, bit1 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
|
||||||
|
; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á SYS_PAGE.IDE_0..3
|
||||||
FN_HDD_PART:
|
FN_HDD_PART:
|
||||||
BIT 0,A
|
DI
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
;
|
||||||
|
LD C,A
|
||||||
|
AND 1
|
||||||
LD A,IDE.Chanel.Primary
|
LD A,IDE.Chanel.Primary
|
||||||
JR Z,.SET_CH
|
JR Z,.SET_CH
|
||||||
LD A,IDE.Chanel.Secondary
|
LD A,IDE.Chanel.Secondary
|
||||||
.SET_CH:
|
.SET_CH:
|
||||||
OUT (IDE.Chanel.Set),A
|
OUT (IDE.Chanel.Set),A
|
||||||
|
;
|
||||||
|
LD A,C
|
||||||
|
PUSH AF
|
||||||
|
AND 2
|
||||||
|
;
|
||||||
|
LD A,IDE.Drive.Slave
|
||||||
|
JR NZ,.SET_Master_Slave
|
||||||
|
;
|
||||||
|
LD A,IDE.Drive.Master
|
||||||
|
.SET_Master_Slave:
|
||||||
|
LD BC,IDE.Write.DeviceHead
|
||||||
|
OUT (C),A
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
JR NZ,.Error
|
||||||
|
CALL FN_HDD_INIT.L3
|
||||||
|
JR C,.Error
|
||||||
|
;
|
||||||
|
POP BC
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,B
|
||||||
|
LD (SYS_PAGE.CURRENT_HDD),A
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
AND A
|
||||||
|
.exit: POP HL
|
||||||
|
POP BC
|
||||||
|
EI
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
.Error: POP AF
|
||||||
|
SCF
|
||||||
|
JR .exit
|
||||||
; ENDMODULE
|
; ENDMODULE
|
||||||
;************************************************
|
;************************************************
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,8 @@ EMM.GetMemSize:
|
|||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
;!!!!! …᫨ ¨á¯®«ì§ã¥âáï SLOT3 ᮠ᢮¨¬¨ áâà ¨æ ¬¨, â® ¥ ¯®«ì§®¢ âìáï
|
||||||
|
; á⥪®¬, â ¬ ¬®¦¥â ¡ëâì SP ¢ ०¨¬¥ ᯥªâàã¬
|
||||||
|
|
||||||
;
|
;
|
||||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
|
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
|
||||||
@ -875,7 +876,8 @@ GET_RAMD_NUM:
|
|||||||
; A - current RAM Drives set
|
; A - current RAM Drives set
|
||||||
SWAP_RAM_DRIVES:
|
SWAP_RAM_DRIVES:
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
EX AF,AF'
|
||||||
|
PUSH AF ; ¢á直© á«ãç ©
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
@ -906,8 +908,10 @@ SWAP_RAM_DRIVES:
|
|||||||
LD (SYS_PAGE.CURRENT_RAM_DRV),A
|
LD (SYS_PAGE.CURRENT_RAM_DRV),A
|
||||||
LD C,A
|
LD C,A
|
||||||
;
|
;
|
||||||
.exit: POP AF
|
.exit: EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
POP AF
|
||||||
|
EX AF,AF'
|
||||||
LD A,C
|
LD A,C
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|||||||
@ -126,7 +126,6 @@ EMM.FullInit:
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
|
|
||||||
INIT_SYS_ALL:
|
INIT_SYS_ALL:
|
||||||
DI
|
DI
|
||||||
LD HL,ID_SPRINTER_length
|
LD HL,ID_SPRINTER_length
|
||||||
@ -161,7 +160,7 @@ INIT_SYS_ALL:
|
|||||||
|
|
||||||
LD A,9
|
LD A,9
|
||||||
LD (SYS_PAGE.MSD_SECS-#4000),A
|
LD (SYS_PAGE.MSD_SECS-#4000),A
|
||||||
LD A,0
|
XOR A
|
||||||
LD (SYS_PAGE.DS_1440-#4000),A
|
LD (SYS_PAGE.DS_1440-#4000),A
|
||||||
|
|
||||||
LD HL,SYS_PAGE.RAMD_KEYS-#4000
|
LD HL,SYS_PAGE.RAMD_KEYS-#4000
|
||||||
|
|||||||
@ -19,7 +19,7 @@ DISK_REDIR:
|
|||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
;!TODO ЈсЏр ЂЈть SLOT2 SLOT3 Ј Ї тЅстЈть
|
;!TODO ЈсЏр ЂЈть SLOT2 SLOT3 Ј Ї тЅстЈть, Ў Ѕ ЏЎЋьЇЎЂ ться стЅЊЎЌ тЎЃЄ
|
||||||
;!TODO 亢<>◢碪 悖兕<E68296>言
|
;!TODO 亢<>◢碪 悖兕<E68296>言
|
||||||
SET_DISK_TYPE:
|
SET_DISK_TYPE:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
|
|||||||
@ -315,16 +315,21 @@ SW_ROM:
|
|||||||
;***************************************
|
;***************************************
|
||||||
_mInfoBLOCK #3E00-$,#FF
|
_mInfoBLOCK #3E00-$,#FF
|
||||||
;DOS_OFF:
|
;DOS_OFF:
|
||||||
|
PUSH AF
|
||||||
|
LD A,R
|
||||||
DI
|
DI
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD BC,(#5BFF) ; !HARDCODE
|
LD BC,(#5BFF) ; !HARDCODE
|
||||||
LD A,#C9
|
LD A,#C9 ; Opcode RET
|
||||||
LD (#5BFF),A ; !HARDCODE
|
LD (#5BFF),A ; !HARDCODE
|
||||||
CALL #5BFF ; !HARDCODE
|
CALL #5BFF ; !HARDCODE
|
||||||
LD (#5BFF),BC ; !HARDCODE
|
LD (#5BFF),BC ; !HARDCODE
|
||||||
POP BC
|
POP BC
|
||||||
POP AF
|
POP AF
|
||||||
|
JP PO,.no_EI
|
||||||
|
EI
|
||||||
|
.no_EI: POP AF
|
||||||
RET
|
RET
|
||||||
;***************************************
|
;***************************************
|
||||||
|
|
||||||
|
|||||||
@ -1,396 +0,0 @@
|
|||||||
;.PRINTX "Service."
|
|
||||||
|
|
||||||
SERVICE:
|
|
||||||
LD DE,SR_MENU
|
|
||||||
LD BC,SR_MENU.Size
|
|
||||||
CALL RUN_MENU ;09f3
|
|
||||||
LD HL,SR_TAB
|
|
||||||
CALL EXEC_PNT
|
|
||||||
JR SERVICE
|
|
||||||
|
|
||||||
SR_TAB: DW UTILIT
|
|
||||||
DW GOTO_TRDOS.m128
|
|
||||||
DW GOTO_TRDOS.m48
|
|
||||||
DW TURBO_OFF
|
|
||||||
DW TURBO_ON
|
|
||||||
DW CLEAR_RAM
|
|
||||||
DW RET_FROM_M
|
|
||||||
|
|
||||||
; DC - every last character of a string will have bit 7 set
|
|
||||||
SR_MENU:
|
|
||||||
BYTE 8 ; ª®«¨ç¥á⢮ ¯ãªâ®¢
|
|
||||||
BYTE 'Options ',#FF ; § £®«®¢®ª ¬¥î
|
|
||||||
DC 'RUN disk.trd'
|
|
||||||
DC '128 TR-DOS'
|
|
||||||
DC '48 TR-DOS'
|
|
||||||
DC 'TURBO OFF '
|
|
||||||
DC 'TURBO ON '
|
|
||||||
DC 'Clear RAM'
|
|
||||||
DC 'RETURN'
|
|
||||||
DC " " ; ¬ àª¥à ª®æ
|
|
||||||
.Size EQU $-SR_MENU
|
|
||||||
|
|
||||||
;*****************************
|
|
||||||
|
|
||||||
;SR_48R:
|
|
||||||
GOTO_TRDOS:
|
|
||||||
.m128: LD A,#10
|
|
||||||
JR .RUN
|
|
||||||
;SR_48:
|
|
||||||
.m48: LD A,#30 ; ‘⮯®à PORT_128 !!!
|
|
||||||
;SR_48A:
|
|
||||||
.RUN: LD BC,#7FFD
|
|
||||||
OUT (C),A
|
|
||||||
LD BC,0 ; <20>€ 0 !!
|
|
||||||
PUSH BC
|
|
||||||
LD BC,#3D2F ; ‚ DOS !
|
|
||||||
PUSH BC
|
|
||||||
JP SW_ROM
|
|
||||||
|
|
||||||
;*******************************
|
|
||||||
TURBO_OFF:
|
|
||||||
LD A,BIOS.FN_TURBO.OFF
|
|
||||||
LD C,BIOS.FN_TURBO
|
|
||||||
JP_to_BIOS
|
|
||||||
TURBO_ON:
|
|
||||||
LD A,BIOS.FN_TURBO.ON
|
|
||||||
LD C,BIOS.FN_TURBO
|
|
||||||
JP_to_BIOS
|
|
||||||
|
|
||||||
;*******************************
|
|
||||||
|
|
||||||
CLEAR_RAM:
|
|
||||||
DI
|
|
||||||
LD C,BIOS.FullInit
|
|
||||||
RST_to_BIOS
|
|
||||||
;CALL ToBIOS_3D13
|
|
||||||
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¢®§¢à â ¢ DSS ¯® CAD
|
|
||||||
; ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
|
|
||||||
; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â .
|
|
||||||
;!TODO ¯à¨¤ã¬ âì ª ª ®âª«îç âì ¯¥à¥å¢ â ⮫쪮 ¢®§¢à â ¢ DSS
|
|
||||||
LD A,ACEX.RET_PORT
|
|
||||||
LD BC,BIOS.SET_PORTS
|
|
||||||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
|
||||||
;CALL ToBIOS_3D13
|
|
||||||
RST_to_BIOS
|
|
||||||
;
|
|
||||||
EI
|
|
||||||
RET
|
|
||||||
|
|
||||||
;SR_CL_MEM:
|
|
||||||
; DI
|
|
||||||
; LD A,10H
|
|
||||||
;SR_CL_R2:
|
|
||||||
; LD BC,1FFDH
|
|
||||||
; OUT (C),A
|
|
||||||
; EX AF,AF'
|
|
||||||
; XOR A
|
|
||||||
;SR_CL_R1:
|
|
||||||
; LD BC,7FFDH
|
|
||||||
; OUT (C),A
|
|
||||||
; LD HL,0C000H
|
|
||||||
; LD DE,0C001H
|
|
||||||
; LD BC,03FFFH
|
|
||||||
; LD (HL),L
|
|
||||||
; LDIR
|
|
||||||
; INC A
|
|
||||||
; CP 48H
|
|
||||||
; JR NZ,SR_CL_R1
|
|
||||||
; EX AF,AF'
|
|
||||||
; CP 0
|
|
||||||
; JP Z,BASIC_128 ; ¢ë室 á¡à®á BASIC 128
|
|
||||||
; LD A,0
|
|
||||||
; JR SR_CL_R2
|
|
||||||
|
|
||||||
;*****************************
|
|
||||||
; *** MENU IS-DOS ***
|
|
||||||
;*****************************
|
|
||||||
|
|
||||||
ISDOS:
|
|
||||||
LD HL,IS_TAB
|
|
||||||
LD DE,IS_MENU
|
|
||||||
LD BC,IS_MENU.Size
|
|
||||||
PUSH HL
|
|
||||||
CALL RUN_MENU
|
|
||||||
POP HL
|
|
||||||
CALL EXEC_PNT
|
|
||||||
JR ISDOS
|
|
||||||
|
|
||||||
IS_TAB:
|
|
||||||
; DW TR_DOS
|
|
||||||
; DW SP_DOS
|
|
||||||
DW SPRINTER_1X
|
|
||||||
DW AY8910_X
|
|
||||||
DW PENTAGON
|
|
||||||
DW SCORPION
|
|
||||||
DW PENTAGON512
|
|
||||||
DW SPRINTER_reset ;SPRINTER_2X
|
|
||||||
DW RET_FROM_M
|
|
||||||
|
|
||||||
; DC - every last character of a string will have bit 7 set
|
|
||||||
IS_MENU:
|
|
||||||
BYTE 8 ; ª®«¨ç¥á⢮ ¯ãªâ®¢
|
|
||||||
BYTE 'Hardware',#FF ; § £®«®¢®ª ¬¥î
|
|
||||||
DC 'Sprinter ZX '
|
|
||||||
DC 'ZX Spectrum'
|
|
||||||
DC 'Pentagon 128'
|
|
||||||
DC 'Scorpion 256'
|
|
||||||
DC 'Pentagon 512'
|
|
||||||
DC 'Restart '
|
|
||||||
DC 'RETURN'
|
|
||||||
DC " " ; ¬ àª¥à ª®æ
|
|
||||||
.Size EQU $-IS_MENU
|
|
||||||
|
|
||||||
;******************************
|
|
||||||
;SP_DOS:
|
|
||||||
; LD B,0E2H
|
|
||||||
; LD A,0E1H
|
|
||||||
; JR TR_DOS1
|
|
||||||
;TR_DOS:
|
|
||||||
; LD B,0EAH
|
|
||||||
; LD A,0E1H
|
|
||||||
;TR_DOS1:
|
|
||||||
; CALL DOS_ON
|
|
||||||
; CALL SET_ROM_PAGES
|
|
||||||
; CALL DOS_OFF
|
|
||||||
; RET
|
|
||||||
;******************************
|
|
||||||
|
|
||||||
|
|
||||||
;**************************************************
|
|
||||||
;Sprinter ZX
|
|
||||||
SPRINTER_1X:
|
|
||||||
CALL _SET_CNF
|
|
||||||
LD C,BIOS.RST_CONF.SP97_1
|
|
||||||
RST_to_BIOS
|
|
||||||
CALL CNF_PN_320
|
|
||||||
LD L,2 ;FN_SYNC.INT_PENT
|
|
||||||
JR 1F ;!FIXIT ¬¥âªã ¯à¨¤ã¬ âì
|
|
||||||
;
|
|
||||||
;ZX Spectrum
|
|
||||||
AY8910_X:
|
|
||||||
CALL _SET_CNF
|
|
||||||
LD C,BIOS.RST_CONF.AY8910
|
|
||||||
RST_to_BIOS
|
|
||||||
|
|
||||||
LD A,#FA ; no ACC, Original waits
|
|
||||||
LD (Port_All_Mode),A
|
|
||||||
|
|
||||||
CALL CNF_SC_312
|
|
||||||
LD L,3 ;FN_SYNC.INT_ORIG
|
|
||||||
1: LD DE,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
|
||||||
CALL CONFIG_SET
|
|
||||||
CALL CLS ;!FIXIT 㦮 «¨?
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
|
|
||||||
SCORPION:
|
|
||||||
CALL _SET_CNF
|
|
||||||
CALL CNF_SC_312
|
|
||||||
LD L,1 ;FN_SYNC.INT_SCORP
|
|
||||||
LD DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON
|
|
||||||
JR CONFIG_SET
|
|
||||||
|
|
||||||
PENTAGON:
|
|
||||||
CALL _SET_CNF
|
|
||||||
CALL CNF_PN_320
|
|
||||||
LD L,2 ;FN_SYNC.INT_PENT
|
|
||||||
LD DE,CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON
|
|
||||||
JR CONFIG_SET
|
|
||||||
|
|
||||||
PENTAGON512:
|
|
||||||
CALL _SET_CNF
|
|
||||||
CALL CNF_PN_320
|
|
||||||
LD L,2 ;FN_SYNC.INT_PENT
|
|
||||||
LD DE,CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512
|
|
||||||
; JR CONFIG_SET
|
|
||||||
CONFIG_SET:
|
|
||||||
PUSH DE
|
|
||||||
|
|
||||||
EI
|
|
||||||
HALT
|
|
||||||
DI
|
|
||||||
|
|
||||||
IN A,(SLOT3)
|
|
||||||
EX AF,AF'
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD (SYS_PAGE.CONFIG_DE),DE
|
|
||||||
;!FIXIT ¥áâì «¨ á¬ëá« ¤¥« âì ¤® FN_SYNC?
|
|
||||||
LD A,(ZX_VARS.BORDER)
|
|
||||||
RRCA
|
|
||||||
RRCA
|
|
||||||
RRCA
|
|
||||||
AND 7
|
|
||||||
OUT (BorderColor),A
|
|
||||||
;
|
|
||||||
EX AF,AF'
|
|
||||||
OUT (SLOT3),A
|
|
||||||
|
|
||||||
LD A,L
|
|
||||||
LD C,BIOS.FN_SYNC
|
|
||||||
RST_to_BIOS
|
|
||||||
|
|
||||||
LD HL,#4104 ;!HARDCODE
|
|
||||||
LD E,0
|
|
||||||
LD BC,256*4 + BIOS.LP_OPEN_S ;!HARDCODE
|
|
||||||
RST_to_BIOS
|
|
||||||
|
|
||||||
LD HL,#5104 ;!HARDCODE
|
|
||||||
LD E,0
|
|
||||||
LD BC,256*4 + BIOS.LP_OPEN_S
|
|
||||||
RST_to_BIOS
|
|
||||||
|
|
||||||
POP DE
|
|
||||||
LD A,E
|
|
||||||
OUT (SYS_PORT.ROM),A
|
|
||||||
|
|
||||||
IM 1
|
|
||||||
EI
|
|
||||||
RET
|
|
||||||
|
|
||||||
SPRINTER_reset:
|
|
||||||
CALL _SET_CNF
|
|
||||||
LD BC,256*BIOS.REINIT.SOFT_RESET + BIOS.REINIT
|
|
||||||
JP_to_BIOS
|
|
||||||
|
|
||||||
_SET_CNF:
|
|
||||||
DI
|
|
||||||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
|
||||||
OUT (SYS_PORT.ROM),A
|
|
||||||
RET
|
|
||||||
|
|
||||||
CNF_SC_312:
|
|
||||||
LD A,Port_VSYNC.SET_312L
|
|
||||||
OUT (Port_VSYNC),A
|
|
||||||
RET
|
|
||||||
|
|
||||||
CNF_PN_320:
|
|
||||||
LD A,Port_VSYNC.SET_320L
|
|
||||||
OUT (Port_VSYNC),A
|
|
||||||
RET
|
|
||||||
|
|
||||||
; LD A,CNF_0
|
|
||||||
; OUT (SYS_PORT.ROM),A
|
|
||||||
; CALL DOS_OFF
|
|
||||||
; JP 0
|
|
||||||
|
|
||||||
;*****************************
|
|
||||||
; *** MENU UTILITES ***
|
|
||||||
;*****************************
|
|
||||||
;!FIXIT íâ® § ¯ã᪠c:\disk.trd - ¥ ¤ã¬ î, çâ® í⮠㦮, ¬®¦® § ¬¥¨âì
|
|
||||||
UTILIT:
|
|
||||||
LD HL,C_DISK_C
|
|
||||||
CALL CALL_DOS1
|
|
||||||
|
|
||||||
;!TEST
|
|
||||||
;CALL DOS_ON
|
|
||||||
;LD A,0 ; DETECT_HDD
|
|
||||||
;CALL EXP_HDD
|
|
||||||
LD C,BIOS.HDD_INIT
|
|
||||||
RST_to_BIOS
|
|
||||||
;CALL DOS_OFF
|
|
||||||
;
|
|
||||||
|
|
||||||
JR C,DISK_UTILIT
|
|
||||||
|
|
||||||
LD HL,C_DISK_C3
|
|
||||||
CALL CALL_DOS1
|
|
||||||
|
|
||||||
UTIL_DISK:
|
|
||||||
XOR A
|
|
||||||
;!TEST
|
|
||||||
LD C,BIOS.FreeMemRMD
|
|
||||||
RST_to_BIOS
|
|
||||||
;CALL EMM_FN3 ;!!!!! ç¥à¥§ RST_to_BIOS EMM.FreeMemRMD
|
|
||||||
;
|
|
||||||
|
|
||||||
LD HL,C_DEMO6
|
|
||||||
CALL CALL_DOS1
|
|
||||||
|
|
||||||
XOR A
|
|
||||||
;!TEST
|
|
||||||
LD C,BIOS.GET_RAMD_ST
|
|
||||||
RST_to_BIOS
|
|
||||||
;CALL GET_RAMD_ST
|
|
||||||
;
|
|
||||||
|
|
||||||
JR C,UTIL_DISK_L1
|
|
||||||
JR Z,UTIL_DISK_L1
|
|
||||||
|
|
||||||
LD HL,C_DISK_C1
|
|
||||||
CALL CALL_DOS1
|
|
||||||
LD HL,C_DISK_C2
|
|
||||||
CALL CALL_DOS1
|
|
||||||
RET
|
|
||||||
|
|
||||||
UTIL_DISK_L1:
|
|
||||||
LD A,(ZX_VARS.OPER_DISK)
|
|
||||||
INC A
|
|
||||||
CP 2
|
|
||||||
JR Z,DISK_UTIL_RET
|
|
||||||
LD HL,C_DISK_C5
|
|
||||||
CALL CALL_DOS1
|
|
||||||
JR UTIL_DISK
|
|
||||||
|
|
||||||
DISK_UTIL_RET:
|
|
||||||
LD HL,C_DISK_C6
|
|
||||||
CALL CALL_DOS1
|
|
||||||
RET
|
|
||||||
|
|
||||||
DISK_UTILIT:
|
|
||||||
LD HL,C_DISK_C4
|
|
||||||
CALL CALL_DOS1
|
|
||||||
JR UTIL_DISK
|
|
||||||
|
|
||||||
C_DEMO6: DB .Size, ZX_Token.rem, ':/disk.trd', 13,80
|
|
||||||
.Size EQU $-C_DEMO6-1
|
|
||||||
|
|
||||||
;***************************************
|
|
||||||
|
|
||||||
;VERSION: DEFB 22,21,0
|
|
||||||
; DEFB 16,2,"Expansion 3.02 1997 ELSY Co.",16,1,0FFh
|
|
||||||
|
|
||||||
;**********************************************
|
|
||||||
|
|
||||||
DOS_RUN:
|
|
||||||
LD HL,C_DISK_C1
|
|
||||||
CALL CALL_DOS1
|
|
||||||
|
|
||||||
LD HL,C_DISK_C2
|
|
||||||
CALL CALL_DOS1
|
|
||||||
RET
|
|
||||||
|
|
||||||
START_TRD:
|
|
||||||
LD HL,C_DISK_C
|
|
||||||
CALL CALL_DOS1
|
|
||||||
LD HL,C_DISK_C0
|
|
||||||
CALL CALL_DOS1
|
|
||||||
LD HL,C_DISK_C3
|
|
||||||
CALL CALL_DOS1
|
|
||||||
RET
|
|
||||||
|
|
||||||
C_DISK_C: DB .Size, ZX_Token.rem, ':', 13,80
|
|
||||||
.Size EQU $-C_DISK_C-1
|
|
||||||
|
|
||||||
C_DISK_C0: DB .Size, ZX_Token.rem, ':/CLEAR E', 13,80
|
|
||||||
.Size EQU $-C_DISK_C0-1
|
|
||||||
|
|
||||||
C_DISK_C1: DB .Size, ZX_Token.rem, ':/RMD E', 13,80
|
|
||||||
.Size EQU $-C_DISK_C1-1
|
|
||||||
|
|
||||||
C_DISK_C2: DB .Size, ZX_Token.rem, ':RUN', 13,80
|
|
||||||
.Size EQU $-C_DISK_C2-1
|
|
||||||
|
|
||||||
C_DISK_C3: DB .Size, ZX_Token.rem, ':/HDD', 13,80
|
|
||||||
.Size EQU $-C_DISK_C3-1
|
|
||||||
|
|
||||||
C_DISK_C4: DB .Size, ZX_Token.rem, ':/FDD', 13,80
|
|
||||||
.Size EQU $-C_DISK_C4-1
|
|
||||||
|
|
||||||
C_DISK_C5: DB .Size, ZX_Token.rem, ':/B:', 13,80
|
|
||||||
.Size EQU $-C_DISK_C5-1
|
|
||||||
|
|
||||||
C_DISK_C6: DB .Size, ZX_Token.rem, ':/A:', 13,80
|
|
||||||
.Size EQU $-C_DISK_C6-1
|
|
||||||
;
|
|
||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user