|
Amazing #01
29 сентября 1997 |
|
TR-DOS - disable key Break, poll SH 93 at the lack of disk drive head positioning procedure.

Section: Tr-Dos
Text: J. Jury
Music: IRONMAN
Information: Dr.Serg, Mr.Beeper
"Today we will talk
one of the glitches in TR-DOS "
So it was written in journal
"ZX-FORMAT", about the glitch, which I
now going to tell you
detail.
This journal has been described a case
when you start your computer, head
drive directed to trk 159 and tried to move on. Explanation they
given is: (approx)
- Comrades nick! The problem is not in
Your controller, but in your ROM. So
that change the ROM and everything will work
as it should.
I'd like to see theirs faces when
this "new ROM" run for about a week. Yes, when to change
everything as PZU'shku though, would have worked fine, but after
a few days, everything happens for the first time.
Do not want to upset you, but the whole problem
not in the ROM and floppy drive in your controller! It has
already been verified and tested several times. Most often this
"Glitch" found in computers, model "Leningrad2", "Kharkiv", and
the like, where there is a controller without the ROM, but
instead the usual 128k worth 512K.
So comrades PUBLISHER check
the reliability of their materials before
than releasing them into the light!
p.s. Sorry guys!
________________________________________
I want to write here is about.
Many start working on the assembly
programmers might have noticed that
loading unit sectors with the entry point
15635 (# 3D13 hate HEX - the system!)
stops when you press
BREAK. To avoid this, sufficient
first program to put here such
two lines:
LD HL, 51697
LD (23746), HL
and all! That's all suffering with the key
BREAK will be finished - it simply "cease to exist."
Using the above method
together with the load through # 3D13 - Best
loader, which can only come up with: In - First, it is brief,
and secondly - Works on all computers nazavisimo version of
TR-DOS. This method is used and the DREAM MAKERS SOFTWARE, and
MAX IWAMOTO.
And: Driesse! Learn to save memory: what to write:
LD B, LEN
LD C, 5
because you can instead write:
LD BC, LEN * 256 5
and assembler will understand and one byte of memory
save ("penny - penny gained").
Gentlemen programmers! Squeeze, perhaps
hundred, its software products. There is also a peerless thing
as LZ / PACK or MS_PACK vobschem a lot of them ...
If you have such materials,
send them to our office and we
must publish them.
Now go to the principal.
________________________________________
Today in section Tr-Dos much as two procedures that will be
useful to you in many sluchyayah life, namely:
1. POLL SH 93 AT NO DISC!
2. PROCEDURE FOR POSITIONING HEAD!
Two of these procedures are provided courtesy of the great
CODER'om under klikuhoy Dr.Serg. In the subsequent issues this
section will carry it again, and in
application has its Remix Game
"SPACE CR." a MOUSE!!!
So I ask to love and favor.
*
In order not to complicate your life, to drive
have these procedures in a format ZX-ASM 3
Poll "VG93" in the absence of a disk!
Coded and copyright by Dr.SERG,
(Special for magazine PolyForm)
ORG # 8000
DI
CALL ConDisk
LD HL, met3
LD (HL), A
met2 EI
HALT: DI
CALL ConDisk
CP (HL)
JR NZ, met1
LD A, # 7f
IN A, (# fe)
BIT 0, A
JR NZ, met2
met1 DS 3
RET
met3 DB 0
ConDisk PUSH IY
PUSH IX
PUSH HL
PUSH DE
PUSH BC
LD (ConDisk1 +1), SP
; Installation for the add. # 5CC2: 3ConDisk1
LD A, # c3
LD (# 5cc2), A
LD HL, ConDisk1
LD (# 5cc3), HL
; Command "Forced termination"
LD IX, # 2FC1
CALL LL7846
; The "Restoration"
LD A, # 08
LD BC, # 001F
LD IX, # 2A53
CALL LL7846
, Reading the status registers VG93
LD DE, # 0000
LD IX, # 2740
CALL LL7846
ConDisk1 LD SP, 0
XOR A
Clear the VG93
LD IX, # 1FF3
CALL LL7846
; Restore the system registry VG93
LD IX, # 1FEB
CALL LL7846
; Command "Forced termination"
LD IX, # 2FC1
CALL LL7846
; Installation at - # 5CC2: RET
LD A, # c9
LD (# 5cc2), A
LD A, (# 5CCD)
AND # 40
POP BC
POP DE
POP HL
POP IX
POP IY
RET
LL7846 PUSH IX
JP # 3D2F
The procedure for positioning the head!
Coded and copyright by Dr.SERG,
(Special for magazine PolyForm)
VVHOD: w-nom.treka 0-159
: A = 0 test position 1
(0001 1h00)
: A = 255 not verify 0
OUTPUT: A = 0 O.K.
A <> 0 Error,
BIT 7, a = 1 kom.ne priinyata
BIT 4, a = 1 osh-ka positioning
BIT 0, a = 1 kontr.ne ready to receive
izm.et IX, AF
Business Registry => (ErrWG)
When starting the engine pauses
opred.konstantoy => (DrPause)
ORG 25000
LD B, 0; Trk
Posic PUSH BC
LD IX, posicC
AND A
SET 2, (IX +1)
JR Z, posic3
RES 2, (ix +1)
posic3 LD IX, posicex
PUSH IX
And, installation of side
LD A, B
SRL A
LD B, A
LD IX, # 1feb
JR NC, posic1
LD IX, # 1ff6
posic1 CALL Dos2
LD IX, # 3c30
CALL Dos2
BIT 0, A
jr z, posic4
; SH not gotova.preryvanie Kamanda
LD A,% 11010000
LD C, # 1f
LD IX, # 2a53
JR posic1
; Checking motor rotation
; And modification konst.zaderzhki
posic4 LD IX, 1
BIT 7, A
JR Z, posic5
LD IX, (DrPause)
posic5 LD (posicp +2), IX
LD A, B
LD C, # 7f
CALL Dos1; installation number trk.
posicC LD A,% 00011100;
; Bit 2-way navigation key and check ..
LD C, # 1f
CALL Dos1
CALL Dos1; Track Search
LD IX, # 3c30; in a, (# 1f)
posic2 CALL Dos2
BIT 0, A; is the command
JP NZ, posic2
BIT 7, A; Emergency exit
RET NZ; drive worth!
BIT 4, A: RET NZ; error search
BIT 3, A: RET NZ; error control.
C; code (if CHECK)
LD (ErrWG), A
And, a pause, if there was engine start
posicp LD IX, 0
posic6 DEC IX
LD A, XL
OR XH
JR NZ, posic6
POP BC: RET
posicex LD (ErrWG), a
POP BC
RET
; Nn transition TR.DOS
; For 2A53: OUT (BC), A: RET
Dos1 LD IX, # 2a53; out (c), a: ret
Dos2 PUSH IX
JP # 3d2f
ErrWG DB 0
DrPause DW # A000
Attention!
These procedures do not work on ROM ver
siey TR-DOS 5.03.
When using these procedures in their own programs, make
reference to author.
Today all are waiting for your letters of representation
proposition.
________________________________________
Other articles:
Similar articles:
В этот день... 15 November