Error: No Drive !

ZXNet echo conference «code.zx»

From 500:812/22.01 To All 7 May 1998

▒ ▒▒▒┌┐▒ ▒▒ ▒▒ ▒ ┌┐▒ ┌┐┌┐▒└┘▒▒ ┌──┐┌┐▒┌┐▒ ┌┘└┐▒ │└┘│┌──┐▒ │┌┐│││▒││▒ └┐┌┘▒ │┌┐│└┐┌┘▒ ▒ │└┘│││▒││▒ └┘▒ ││││┌┘└┐┌─┐▒│┌┐││└┐│└┐▒ ┌┐▒ └┘└┘└──┘└┐│▒└┘└┘└─┘└─┘ └┘ └┘ I thought and decided: it’s simply necessary detect the presence of a disk drive, when for him! After all, every program may break off and say "NO DISK". A The disk is there, there's just no disk drive... Therefore, here is the program that I I recommend inserting it wherever possible. Of course, if there is a disk access there bypassing #3D13. Obvious disadvantages: 2 system systems are damaged variables in TR-DOS and when you click on BREAK is called by RST #08, and therefore BASIC or part of it is required. Possible problems with interruptions - I haven't I know whether they will definitely be turned off at the entrance valid if they were turned off at the input. Also I cannot guarantee the absence glitches in determining the drive on special brake discs. And on the faulty ones. Determination occurs by active TRK00 interface signal level. For this causes the head to move to track 0 and the microcon status register is read troller. If the level is passive, then either there is no disk drive at all, or it has The sensor is faulty or does not move head ;--------------------------------------- ;(C) FK0 1998 ; DETERMINING THE PRESENCE OF A DISK DRIVE ; AT THE OUTPUT: ; Z - NO DISK DRIVE; CY - PRESS BREAK DRVDET LD HL,(#5C3D) ; Intercepting BREAK PUSH HL LD (END+1),SP LD HL,ERR_SP LD (#5C3D),HL LD A,#D8 LD(#5CD8),A ; Interrupt **** LD C,#1F CALL OUTDOS LD A,#08 ; Recovery CALL OUTDOS LD D,0 PUSH DE CALL POSIT ; Waiting for the end POP DE ; movement CALL POSIT ; heads and LD A,(#5CCD) ; read register AND #04 ; condition. JR END ; TRK00 = 2 bit OUTDOS LD HL,#2A53 ; Output to port JR DOS1 POSIT LD HL,#2740 ; Positioning DOS1 PUSH HL JP #3D2F DS 12; To interrupt ERR_SP DW $+2 ; IM 1 and for RST #08 SCF ; on Scorpio END LD SP,0 POP HL LD (#5C3D),HL PUSH AF LD C,#FF ; Stopping the disk XOR A CALL OUTDOS LD B,0 ; Pause **** DJNZ$ LD A,#3C CALL OUTDOS LD C,#3F XOR A CALL OUTDOS POP AF RET ;--------------------------------------- ****Microcontroller interrupt maybe not necessary. **** The pause may be too long. Everything is checked - it works even on a slow TEAK! P.S. I'm too lazy to write, but I figured it out that BREAK can be intercepted more easily -via #5CC2. Of course we need to check it. -+- ZXASM_3.0

From 500:812/08.14 To Kirill Frolov 9 May 1998

Hi, Kirill! KF> I thought and decided: it’s simply necessary KF> detect the presence of a disk drive, when installed KF> And therefore here is the program that I KF> I recommend inserting it wherever possible. Yes, here's the problem - there is no choice of disk drive anywhere. it will check the one that was selected last. KF> Also, I cannot guarantee the absence KF> glitches in determining the drive on special KF> brake disc drives. will work on any. KF> LD C,#FF ; Stopping the disk KF> XOR A KF> CALL OUTDOS KF> LD B,0 ; Pause **** KF> DJNZ $ KF> LD A,#3C KF> CALL OUTDOS but stopping the disk like this is not good. It's better to use command #20 - step with your head up. The disk drive cuts out immediately and does not have time to move. KF> P.S. I'm too lazy to write, but I thought of it KF> that BREAK can be intercepted more easily - KF> via #5CC2. Of course we need to check. both simpler and better. Best wishes.Dmitry aka -=LD=- / X-TRADE GROUP. -+- SMM version 1.08

From 500:812/06.13 To Kirill Frolov 10 May 1998

Hello, Kirill! 07-05-98 в 18:17:00 Kirill Frolov => All: ===============cut=================== SEA_DRV OR #3C CALL TO_PRFF CALL SEA_INI BIT 2,A JR NZ,SEA_DR1 LD A, #4 CALL TO_PR3F CALL SEA_INI BIT 2,A JR NZ,SEA_DR1 ;---------------------- ;---------------------- SEA_INI LD A,#0 CALL TO_PR1F LD IX,#3EF5 ;WAITING OF INTRQ CALL TO_TWO JP FR_PR1F ===============cut=================== Мой вариант. С нилучшими пожеланиями, Олег aka Ruiner. -+- Брысь-Edit v6.06