diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 540fd2a2..9c7d7591 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -7,7 +7,9 @@ Version 3.3 - WBW: Support per-drive floppy configuration - WBW: Support for Bill Shen's VGARC - WBW: Support for MG014 Parallel Port module + printer -- WBW: Support for Zip Drive on emm interface (much inspiration from Alan Cox) +- WBW: Support for EMM Zip Drive on PPI interface (much inspiration from Alan Cox) +- WBW: Support for PPA Zip Drive on PPI interface (much inspiration from Alan Cox) +- WBW: Support for SyQuest SparQ Drive on PPI interface (much inspiration from Alan Cox) Version 3.2.1 ------------- diff --git a/Source/HBIOS/imm.asm b/Source/HBIOS/imm.asm index 7e59d1db..19c1b54a 100644 --- a/Source/HBIOS/imm.asm +++ b/Source/HBIOS/imm.asm @@ -235,28 +235,51 @@ IMM_DETECT: OUT (C),A ; DO IT CALL DELAY ; BRIEF DELAY FOR GOOD MEASURE ; - ; WE USE THIS SEQUENCE TO DETECT AN ACTUAL IMM DEVICE ON THE - ; PARALLEL PORT. THE VALUES RECORDED IN THE FINAL CALL TO - ; IMM_DISCONNECT ARE USED TO CONFIRM DEVICE PRESENCE. - ; NO ACTUAL SCSI COMMANDS ARE USED. + ; ATTEMPT TO ESTABLISH A CONNECTION TO THE IMM DEVICE AND + ; ISSUE A SCSI BUS RESET. WE DON'T KNOW IF DEVICE IS THERE + ; YET. THIS IS DONE BLIND ASSUMING IT IS THERE. CALL IMM_DISCONNECT CALL IMM_CONNECT - CALL IMM_DISCONNECT + CALL IMM_RESETPULSE ; ISSUE A SCSI BUS RESET + LD DE,62 ; WAIT A BIT + CALL VDELAY ; - ; THE IMM_SN VALUES ARE RECORDED IN THE CPP ROUTINE USED BY - ; IMM_CONNECT/DISCONNECT. - ; EXPECTING S1=$B8, S2=$18, S3=$38 - LD A,(IMM_S1) - CP $B8 - RET NZ - LD A,(IMM_S2) - CP $18 - RET NZ - LD A,(IMM_S3) - CP $38 - RET NZ + ; USE AN ABBREVIATED VERSION OF SELECT PROCESSING TO + ; CHECK IF DEVICE EXISTS. + IMM_WCTL($0C) + CALL IMM_READSTATUS ; - XOR A +#IF (IMMTRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF +; + ; READY FOR SELECT? + AND $08 + CP $00 + JR NZ,IMM_DETECT1 +; + IMM_WCTL($04) + LD A,$80 | (1 << IMM_TGT) + CALL IMM_WRITEDATA + IMM_WCTL($0C) + IMM_WCTL($0D) + CALL DELAY + CALL IMM_READSTATUS +; +#IF (IMMTRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF +; + ; DID SELECT SUCCEED? + AND $08 + CP $08 +; +IMM_DETECT1: + PUSH AF + CALL IMM_DISCONNECT + POP AF RET ; ;============================================================================= @@ -305,10 +328,12 @@ IMM_WRITE: ; ; IMM_IO: - LD (IMM_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS + PUSH HL CALL IMM_CHKERR ; CHECK FOR ERR STATUS AND RESET IF SO + POP HL JR NZ,IMM_IO3 ; BAIL OUT ON ERROR ; + LD (IMM_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS ; SETUP LBA ; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN LD HL,IMM_CMD_RW+1 ; START OF LBA FIELD IN CDB (MSB) @@ -610,6 +635,10 @@ IMM_SELECT: ; IMM_SELECT1: CALL IMM_READSTATUS +#IF (IMMTRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF AND $08 JR Z,IMM_SELECT2 ; IF CLEAR, MOVE ON DEC HL @@ -623,22 +652,8 @@ IMM_SELECT2: ; PLACE HOST AND TARGET BIT ON DATA BUS LD A,$80 | (1 << IMM_TGT) CALL IMM_WRITEDATA - CALL DELAY ; CONFIRM DELAY TIME? IMM_WCTL($0C) -; -#IF (IMMTRACE >= 3) - CALL IMM_READSTATUS - CALL PC_SPACE - CALL PRTHEXBYTE -#ENDIF -; IMM_WCTL($0D) -; -#IF (IMMTRACE >= 3) - CALL IMM_READSTATUS - CALL PC_SPACE - CALL PRTHEXBYTE -#ENDIF ; LD HL,500 ; TIMEOUT COUNTER ; diff --git a/Source/HBIOS/ppa.asm b/Source/HBIOS/ppa.asm index 94bc5243..38d5cc7a 100644 --- a/Source/HBIOS/ppa.asm +++ b/Source/HBIOS/ppa.asm @@ -324,10 +324,12 @@ PPA_WRITE: ; ; PPA_IO: - LD (PPA_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS + PUSH HL CALL PPA_CHKERR ; CHECK FOR ERR STATUS AND RESET IF SO + POP HL JR NZ,PPA_IO3 ; BAIL OUT ON ERROR ; + LD (PPA_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS ; SETUP LBA ; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN LD HL,PPA_CMD_RW+1 ; START OF LBA FIELD IN CDB (MSB) @@ -595,7 +597,6 @@ PPA_SELECT: PPA_WCTL($0C) LD A,1 << PPA_SELF CALL PPA_WRITEDATA - LD A,$08 \ CALL PPA_WRITECTRL PPA_WCTL($08) ; LD HL,500 ; TIMEOUT COUNTER diff --git a/Source/HBIOS/syq.asm b/Source/HBIOS/syq.asm index a503c808..ffea9b32 100644 --- a/Source/HBIOS/syq.asm +++ b/Source/HBIOS/syq.asm @@ -393,15 +393,17 @@ SYQ_WRITE: ; ; SYQ_IO: - LD (SYQ_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS - LD A,B ; XFR MODE TO ACCUM - LD (SYQ_XFRMODE),A ; AND SAVE IT FOR CMD ; PUSH BC ; SAVE MODE/COMMAND + PUSH HL ; SAVE DISK BUF PTR CALL SYQ_CHKERR ; CHECK FOR ERR STATUS AND RESET IF SO + POP HL ; RECOVER DISK BUF PTR POP BC ; RECOVER MODE/COMMAND JR NZ,SYQ_IO1 ; BAIL OUT ON ERROR ; + LD A,B ; XFR MODE TO ACCUM + LD (SYQ_XFRMODE),A ; AND SAVE IT FOR CMD + LD (SYQ_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS LD A,SYQ_LBA ; LBA OFFSET IN CONFIG CALL LDHLIYA ; POINT TO LBA DWORD CALL LD32 ; SET DE:HL TO LBA diff --git a/Source/Images/Common/All/FDISK80.COM b/Source/Images/Common/All/FDISK80.COM index 7e862d67..2a565dae 100644 Binary files a/Source/Images/Common/All/FDISK80.COM and b/Source/Images/Common/All/FDISK80.COM differ diff --git a/Source/RomDsk/ROM_1024KB/FDISK80.COM b/Source/RomDsk/ROM_1024KB/FDISK80.COM index 7e862d67..2a565dae 100644 Binary files a/Source/RomDsk/ROM_1024KB/FDISK80.COM and b/Source/RomDsk/ROM_1024KB/FDISK80.COM differ diff --git a/Source/RomDsk/ROM_512KB/FDISK80.COM b/Source/RomDsk/ROM_512KB/FDISK80.COM index 7e862d67..2a565dae 100644 Binary files a/Source/RomDsk/ROM_512KB/FDISK80.COM and b/Source/RomDsk/ROM_512KB/FDISK80.COM differ diff --git a/Source/ver.inc b/Source/ver.inc index 0ee41555..b905ecf4 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 3 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.3.0-dev.19" +#DEFINE BIOSVER "3.3.0-dev.20" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 9bc8f615..6a478d3e 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 3 rup equ 0 rtp equ 0 biosver macro - db "3.3.0-dev.19" + db "3.3.0-dev.20" endm