bugfix with interrupts in 5x for FDD
This commit is contained in:
parent
918c764244
commit
7c53c2ec02
@ -1105,7 +1105,7 @@ PORTS_INIT:
|
|||||||
INCLUDE 'FUNC_PIC.ASM'
|
INCLUDE 'FUNC_PIC.ASM'
|
||||||
INCLUDE 'FUNC_RAM_ROM_DRV.ASM'
|
INCLUDE 'FUNC_RAM_ROM_DRV.ASM'
|
||||||
INCLUDE 'FUNC_SYS.ASM'
|
INCLUDE 'FUNC_SYS.ASM'
|
||||||
INCLUDE 'FUNK_FOR_TRDOS.ASM'
|
INCLUDE 'FUNC_FOR_TRDOS.ASM'
|
||||||
INCLUDE 'FUNC_5x.asm'
|
INCLUDE 'FUNC_5x.asm'
|
||||||
INCLUDE 'FUNC_LOW_PRINT.ASM'
|
INCLUDE 'FUNC_LOW_PRINT.ASM'
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
@ -1584,11 +1584,13 @@ DOS_OFF:
|
|||||||
DI
|
DI
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH BC
|
PUSH BC
|
||||||
|
;
|
||||||
LD BC,(#5BFF) ; !HARDCODE
|
LD BC,(#5BFF) ; !HARDCODE
|
||||||
LD A,#C9 ; Opcode RET
|
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
|
JP PO,.no_EI
|
||||||
|
|||||||
@ -72,20 +72,19 @@ FDD_5x_GETMED:
|
|||||||
; D7 - "1" - High Density, "0" - Double Density
|
; D7 - "1" - High Density, "0" - Double Density
|
||||||
;Return: None
|
;Return: None
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_SETMED:
|
FDD_5x_SETMED: ;!TEST FDD 720/1440
|
||||||
;!TEST FDD 720/1440
|
|
||||||
IF FDD_NormalCount
|
IF FDD_NormalCount
|
||||||
LD IY,FDD_INI_TABLE.FDD_0
|
LD IY,FDD_INI_TABLE.FDD_0
|
||||||
DEC A
|
DEC A
|
||||||
JR C,.setParams
|
JR C,.setParams
|
||||||
LD IY,FDD_INI_TABLE.FDD_1
|
LD IY,FDD_INI_TABLE.FDD_1
|
||||||
ENDIF
|
ENDIF
|
||||||
.setParams:
|
;
|
||||||
IN A,(SLOT3)
|
.setParams: IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
;!TEST FDD 720/1440
|
;!TEST FDD 720/1440
|
||||||
IF FDD_NormalCount
|
IF FDD_NormalCount
|
||||||
LD (IY+1),L ;SECTORS
|
LD (IY+1),L ;SECTORS
|
||||||
@ -105,10 +104,11 @@ FDD_5x_SETMED:
|
|||||||
LD (FDD_INI_TABLE.FDD_0.BytesPerSector),IX
|
LD (FDD_INI_TABLE.FDD_0.BytesPerSector),IX
|
||||||
LD (FDD_INI_TABLE.FDD_0.F144),A
|
LD (FDD_INI_TABLE.FDD_0.F144),A
|
||||||
ENDIF
|
ENDIF
|
||||||
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
;
|
||||||
;!TEST FDD 720/1440
|
;!TEST FDD 720/1440
|
||||||
IF FDD_NormalCount
|
IF FDD_NormalCount
|
||||||
AND 1
|
AND 1
|
||||||
@ -125,25 +125,26 @@ FDD_5x_SETMED:
|
|||||||
;Return:
|
;Return:
|
||||||
; A - Flag D7 - "1" - High Density, "0" - Double Density
|
; A - Flag D7 - "1" - High Density, "0" - Double Density
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_DETECT:
|
FDD_5x_DETECT: CALL SAVE_INTERRUPTS.switch_off
|
||||||
CALL SET_DOS_ON
|
CALL SET_DOS_ON
|
||||||
CALL DISK_ID
|
CALL DISK_ID
|
||||||
PUSH AF
|
PUSH AF
|
||||||
CALL SET_DOS_OFF
|
CALL SET_DOS_OFF
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
JP SAVE_INTERRUPTS.restore
|
||||||
|
;RET
|
||||||
|
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
;Function: Reset Disk
|
;Function: Reset Disk
|
||||||
; A - Disk
|
; A - Disk
|
||||||
;Return: None
|
;Return: None
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_RESET:
|
FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
|
||||||
CALL SET_DOS_ON
|
CALL SET_DOS_ON
|
||||||
CALL S_FDD
|
CALL S_FDD
|
||||||
CALL DISK_ID
|
CALL DISK_ID
|
||||||
LD A,4 ;NOT READY /NO DISK/
|
JR C,.MOTOR_OFF
|
||||||
JP C,MOTOR_OFF
|
;
|
||||||
CALL RESWG
|
CALL RESWG
|
||||||
XOR A
|
XOR A
|
||||||
OUT (FDC_93.Track),A
|
OUT (FDC_93.Track),A
|
||||||
@ -152,7 +153,21 @@ FDD_5x_RESET:
|
|||||||
CALL SET_DOS_OFF
|
CALL SET_DOS_OFF
|
||||||
LD A,C
|
LD A,C
|
||||||
AND A
|
AND A
|
||||||
RET
|
JP SAVE_INTERRUPTS.restore
|
||||||
|
;RET
|
||||||
|
.MOTOR_OFF: ;PUSH AF
|
||||||
|
LD A,#D0
|
||||||
|
OUT (FDC_93.Command),A ;STOP OPERATION
|
||||||
|
LD A,#00
|
||||||
|
OUT (FDC_93.DrvCTRL),A
|
||||||
|
LD A,#3C
|
||||||
|
OUT (FDC_93.DrvCTRL),A
|
||||||
|
CALL SET_DOS_OFF
|
||||||
|
; CF=1
|
||||||
|
LD A,4 ;NOT READY /NO DISK/
|
||||||
|
;POP AF
|
||||||
|
JP SAVE_INTERRUPTS.restore
|
||||||
|
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
;Function: Read Sectors
|
;Function: Read Sectors
|
||||||
; A - Disk
|
; A - Disk
|
||||||
@ -179,7 +194,11 @@ FDD_5x_READ:
|
|||||||
; DE - Address + (Sector counter * Size sector)
|
; DE - Address + (Sector counter * Size sector)
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_LONG_READ:
|
FDD_5x_LONG_READ:
|
||||||
PUSH IY
|
CALL SAVE_INTERRUPTS.switch_off
|
||||||
|
CALL .Start
|
||||||
|
JP SAVE_INTERRUPTS.restore
|
||||||
|
;
|
||||||
|
.Start: PUSH IY
|
||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH IX
|
PUSH IX
|
||||||
@ -206,8 +225,7 @@ FDD_5x_LONG_READ:
|
|||||||
LD C,A
|
LD C,A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
.DSK_LP:
|
.DSK_LP: LD A,D
|
||||||
LD A,D
|
|
||||||
EXX
|
EXX
|
||||||
CALL SEEK
|
CALL SEEK
|
||||||
EXX
|
EXX
|
||||||
@ -234,18 +252,15 @@ FDD_5x_LONG_READ:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
SET 7,H
|
SET 7,H
|
||||||
SET 6,H
|
SET 6,H
|
||||||
.THISRD:
|
.THISRD: POP DE
|
||||||
POP DE
|
|
||||||
LD A,C
|
LD A,C
|
||||||
INC E
|
INC E
|
||||||
CP E
|
CP E
|
||||||
JP NZ,.NINC_T
|
JP NZ,.NINC_T
|
||||||
LD E,0
|
LD E,0
|
||||||
INC D
|
INC D
|
||||||
.NINC_T:
|
.NINC_T: DJNZ .DSK_LP
|
||||||
DJNZ .DSK_LP
|
.RETDOS: CALL SET_DOS_OFF
|
||||||
.RETDOS:
|
|
||||||
CALL SET_DOS_OFF
|
|
||||||
LD A,XH
|
LD A,XH
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -260,16 +275,14 @@ FDD_5x_LONG_READ:
|
|||||||
LD B,0
|
LD B,0
|
||||||
JR NZ,.ADD8BIT
|
JR NZ,.ADD8BIT
|
||||||
INC B
|
INC B
|
||||||
.ADD8BIT:
|
.ADD8BIT: ADD IX,BC
|
||||||
ADD IX,BC
|
|
||||||
LD BC,0
|
LD BC,0
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
LD B,A
|
LD B,A
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
ERRDOS:
|
ERRDOS: POP HL
|
||||||
POP HL
|
|
||||||
POP BC
|
POP BC
|
||||||
POP DE
|
POP DE
|
||||||
CALL SET_DOS_OFF
|
CALL SET_DOS_OFF
|
||||||
@ -326,7 +339,11 @@ FDD_5x_WRITE:
|
|||||||
; DE - Address + (Sector counter * Size sector)
|
; DE - Address + (Sector counter * Size sector)
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_LONG_WRITE:
|
FDD_5x_LONG_WRITE:
|
||||||
PUSH IY
|
CALL SAVE_INTERRUPTS.switch_off
|
||||||
|
CALL .Start
|
||||||
|
JP SAVE_INTERRUPTS.restore
|
||||||
|
;
|
||||||
|
.Start: PUSH IY
|
||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH IX
|
PUSH IX
|
||||||
@ -353,8 +370,7 @@ FDD_5x_LONG_WRITE:
|
|||||||
LD C,A
|
LD C,A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
.DSK_LP2:
|
.DSK_LP2: LD A,D
|
||||||
LD A,D
|
|
||||||
EXX
|
EXX
|
||||||
CALL SEEK
|
CALL SEEK
|
||||||
EXX
|
EXX
|
||||||
@ -381,16 +397,14 @@ FDD_5x_LONG_WRITE:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
SET 7,H
|
SET 7,H
|
||||||
SET 6,H
|
SET 6,H
|
||||||
.THISWR:
|
.THISWR: POP DE
|
||||||
POP DE
|
|
||||||
LD A,C
|
LD A,C
|
||||||
INC E
|
INC E
|
||||||
CP E
|
CP E
|
||||||
JP NZ,.NINC_T2
|
JP NZ,.NINC_T2
|
||||||
LD E,0
|
LD E,0
|
||||||
INC D
|
INC D
|
||||||
.NINC_T2:
|
.NINC_T2: DJNZ .DSK_LP2
|
||||||
DJNZ .DSK_LP2
|
|
||||||
CALL SET_DOS_OFF
|
CALL SET_DOS_OFF
|
||||||
LD A,XH
|
LD A,XH
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -406,8 +420,7 @@ FDD_5x_LONG_WRITE:
|
|||||||
LD B,0
|
LD B,0
|
||||||
JR NZ,.ADW8BIT
|
JR NZ,.ADW8BIT
|
||||||
INC B
|
INC B
|
||||||
.ADW8BIT:
|
.ADW8BIT: ADD IX,BC
|
||||||
ADD IX,BC
|
|
||||||
LD BC,0
|
LD BC,0
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
LD B,A
|
LD B,A
|
||||||
@ -420,7 +433,7 @@ FDD_5x_LONG_WRITE:
|
|||||||
;-------------------------------
|
;-------------------------------
|
||||||
RD_SEC: LD D,5 ;RETRY COUNT
|
RD_SEC: LD D,5 ;RETRY COUNT
|
||||||
.RRETRY:
|
.RRETRY:
|
||||||
DI
|
;DI
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD A,E
|
LD A,E
|
||||||
INC A
|
INC A
|
||||||
@ -458,7 +471,7 @@ RD_SEC: LD D,5 ;RETRY COUNT
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;-------------------------------
|
;-------------------------------
|
||||||
POP DE
|
POP DE
|
||||||
EI
|
;EI
|
||||||
IN A,(FDC_93.Command)
|
IN A,(FDC_93.Command)
|
||||||
LD C,A
|
LD C,A
|
||||||
;R01
|
;R01
|
||||||
@ -499,7 +512,7 @@ RD_SEC: LD D,5 ;RETRY COUNT
|
|||||||
;-------------------------------
|
;-------------------------------
|
||||||
WR_SEC: LD D,5 ;RETRY COUNT
|
WR_SEC: LD D,5 ;RETRY COUNT
|
||||||
.WRETRY:
|
.WRETRY:
|
||||||
DI
|
;DI
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD A,E
|
LD A,E
|
||||||
INC A
|
INC A
|
||||||
@ -537,7 +550,7 @@ WR_SEC: LD D,5 ;RETRY COUNT
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;-------------------------------
|
;-------------------------------
|
||||||
POP DE
|
POP DE
|
||||||
EI
|
;EI
|
||||||
IN A,(FDC_93.Command)
|
IN A,(FDC_93.Command)
|
||||||
LD C,A
|
LD C,A
|
||||||
;R01
|
;R01
|
||||||
@ -629,17 +642,17 @@ S_FDD: PUSH BC
|
|||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
MOTOR_OFF:
|
; MOTOR_OFF:
|
||||||
PUSH AF
|
; PUSH AF
|
||||||
LD A,#D0
|
; LD A,#D0
|
||||||
OUT (FDC_93.Command),A ;STOP OPERATION
|
; OUT (FDC_93.Command),A ;STOP OPERATION
|
||||||
LD A,#00
|
; LD A,#00
|
||||||
OUT (FDC_93.DrvCTRL),A
|
; OUT (FDC_93.DrvCTRL),A
|
||||||
LD A,#3C
|
; LD A,#3C
|
||||||
OUT (FDC_93.DrvCTRL),A
|
; OUT (FDC_93.DrvCTRL),A
|
||||||
CALL SET_DOS_OFF
|
; CALL SET_DOS_OFF
|
||||||
POP AF
|
; POP AF
|
||||||
RET
|
; RET
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
@ -673,9 +686,9 @@ SPEED: IN A,(SLOT3)
|
|||||||
JP FDD.SET1440 ;NZ
|
JP FDD.SET1440 ;NZ
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
; ¯à¥àë¢ ¨ï ¤®«¦ë ¡ëâì ®âª«îç¥ë
|
||||||
DISK_ID:
|
DISK_ID:
|
||||||
DI
|
;DI
|
||||||
EXX
|
EXX
|
||||||
CALL SPEED
|
CALL SPEED
|
||||||
IN A,(FDC_93.Track)
|
IN A,(FDC_93.Track)
|
||||||
@ -708,7 +721,7 @@ DISK_ID:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
AND #80
|
AND #80
|
||||||
EI
|
;EI
|
||||||
RET
|
RET
|
||||||
.ID_LP4:
|
.ID_LP4:
|
||||||
DEC HL
|
DEC HL
|
||||||
@ -720,7 +733,7 @@ DISK_ID:
|
|||||||
JP NZ,.ID_LP0
|
JP NZ,.ID_LP0
|
||||||
EXX
|
EXX
|
||||||
SCF
|
SCF
|
||||||
EI
|
;EI
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -828,6 +841,26 @@ NTRACK:
|
|||||||
LD H,A
|
LD H,A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
SAVE_INTERRUPTS:
|
||||||
|
.switch_off: PUSH AF
|
||||||
|
LD A,R
|
||||||
|
LD A,#80
|
||||||
|
JP PE,.set_R
|
||||||
|
XOR A
|
||||||
|
.set_R: LD R,A
|
||||||
|
DI
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
; ;
|
||||||
|
.restore: PUSH AF
|
||||||
|
LD A,R
|
||||||
|
BIT 7,A
|
||||||
|
JR Z,.set_di
|
||||||
|
EI
|
||||||
|
POP AF ; PE
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.set_di: DI
|
||||||
|
POP AF ; PO
|
||||||
|
RET
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
@ -320,11 +320,13 @@ SW_ROM:
|
|||||||
DI
|
DI
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH BC
|
PUSH BC
|
||||||
|
;
|
||||||
LD BC,(#5BFF) ; !HARDCODE
|
LD BC,(#5BFF) ; !HARDCODE
|
||||||
LD A,#C9 ; Opcode RET
|
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
|
JP PO,.no_EI
|
||||||
|
|||||||
@ -527,7 +527,7 @@ msgStrings:
|
|||||||
_mSetStr ideFail, tmp_Counter : DZ 'Fail ' ; !FIXIT strFail
|
_mSetStr ideFail, tmp_Counter : DZ 'Fail ' ; !FIXIT strFail
|
||||||
_mSetStr spModel, tmp_Counter : DZ 'Model : '
|
_mSetStr spModel, tmp_Counter : DZ 'Model : '
|
||||||
.str_ACEX_MODEL EQU $$$+2 ; 㪠§ ⥫ì áâப㠨¦¥ ¤«ï ¯ âç ¯¤¥©â¥à®¬
|
.str_ACEX_MODEL EQU $$$+2 ; 㪠§ ⥫ì áâப㠨¦¥ ¤«ï ¯ âç ¯¤¥©â¥à®¬
|
||||||
_mSetStr spCNFver, tmp_Counter : DZ '1K30 core : v'
|
_mSetStr spCNFver, tmp_Counter : DZ 'Core 1K30 : v'
|
||||||
_mSetStr spMemory, tmp_Counter : DZ 'Memory : '
|
_mSetStr spMemory, tmp_Counter : DZ 'Memory : '
|
||||||
_mSetStr cmosFound, tmp_Counter : DZ 'CMOS : Found'
|
_mSetStr cmosFound, tmp_Counter : DZ 'CMOS : Found'
|
||||||
_mSetStr cmosNone, tmp_Counter : DZ 'CMOS : None'
|
_mSetStr cmosNone, tmp_Counter : DZ 'CMOS : None'
|
||||||
@ -678,7 +678,7 @@ msgRusStrings:
|
|||||||
_mSetStrRus ideFail, tmp_Counter : DZ '<EFBFBD>¥ ®¯à¥¤¥«ñ '
|
_mSetStrRus ideFail, tmp_Counter : DZ '<EFBFBD>¥ ®¯à¥¤¥«ñ '
|
||||||
_mSetStrRus spModel, tmp_Counter : DZ 'Œ®¤¥«ì : '
|
_mSetStrRus spModel, tmp_Counter : DZ 'Œ®¤¥«ì : '
|
||||||
.str_ACEX_MODEL EQU $$$+2 ; 㪠§ ⥫ì áâப㠨¦¥ ¤«ï ¯ âç ¯¤¥©â¥à®¬ ; !FIXIT ? ¢ëâ¢ âì ç¥à¥§ FN_CRIPT.Acex_ver ?
|
.str_ACEX_MODEL EQU $$$+2 ; 㪠§ ⥫ì áâப㠨¦¥ ¤«ï ¯ âç ¯¤¥©â¥à®¬ ; !FIXIT ? ¢ëâ¢ âì ç¥à¥§ FN_CRIPT.Acex_ver ?
|
||||||
_mSetStrRus spCNFver, tmp_Counter : DZ '1K30 ï¤à® : v'
|
_mSetStrRus spCNFver, tmp_Counter : DZ 'Ÿ¤à® 1K30 : v'
|
||||||
_mSetStrRus spMemory, tmp_Counter : DZ '<EFBFBD> ¬ïâì : '
|
_mSetStrRus spMemory, tmp_Counter : DZ '<EFBFBD> ¬ïâì : '
|
||||||
_mSetStrRus cmosFound, tmp_Counter : DZ 'CMOS : <EFBFBD> ©¤¥'
|
_mSetStrRus cmosFound, tmp_Counter : DZ 'CMOS : <EFBFBD> ©¤¥'
|
||||||
_mSetStrRus cmosNone, tmp_Counter : DZ 'CMOS : <EFBFBD>¥â'
|
_mSetStrRus cmosNone, tmp_Counter : DZ 'CMOS : <EFBFBD>¥â'
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user