what kind of restart is this?
ZXNet echo conference «code.zx»
From Valerij Kozhevnikov → To All 6 July 1998
Hello All!
Who knows what kind of restart is like this in Scorpio:
LD C,#28
RST 8
DEFB #81
Found in trdos ROM.
Because my book is old, it only contains up to #26.
I used it, like a simplified copy of #23, i.e. can perform
only "auto-connect". Purely visually - it works faster,
i.e. in one head jump. Quick entry point?
And for C=#27 it’s the same, plz. If there is one. :-/
And what is Tr-dos mirror on/off in the screw utilities menu?
I was digging my trdos here, and I found something there. Once upon a time I
I thought that intercepting calls to the drive was done in hardware,
that is, in some place the ROM is replaced, similar to #3Dxx.
Everything turned out to be simpler.
But that's not the point. Does anyone know how to detect the presence/from-
absence of screw NOT using #24 function #81 restart "identification"
HDD fixation".
This restart has a multi-faceted glitch: during its (restart)
version, the passport is read from the screw to the specified address, BUT
For some reason, the shadow guy takes geometry data from this passport
(number of cylinders/heads/sectors) and writes it into its transfers
exchangeable (thank God it’s not wrong).
A friend of mine has a geometry of 560/6/26 in his passport, and on
actually 1024/5/17. And after this restart he needs to stomp
"left arrow + reset", because disk error begins, or climb
in the HDD setup menu to correct the geometry.And they say that there are surprisingly many such incorrect screws, especially
especially among older models.
Another has one head completely banged, and that’s why he has...
a straight piece of the screw disappears. The reaction to restart is similar.
WHAT TO DO???
The code here is a driver for one music. editor, and I’m writing quietly
thoroughly described the whole farm, so that later everything would be in a heap
send to Dismaster for insertion into Melon.
And then there’s a glitch... It’s awkward to use restart.
I dug through the entire trdos and found a bunch of calls to the screw.
The principle is this: RST 8 : DB #8x : RET is placed at address #5CBF,
and CALL #5CBF is implicitly executed.
The procedure that does this is located at #0826.
See below, there it is.
I set the trap to #5CBF and re-read the disk, it worked
first with C=#28 (see at the beginning of the letter), then with C=#01 (selection
disk drive).
And throughout the area #800 - #1000 there are procedures scattered here and there
something cleverly read from port #7FBA, and depending on the pro-
I read that they are doing something so cunning. :))
I read all sorts of things, always from #7FBA comes #7F. Although, judging by
code, it happens differently.
There are guesses, but maybe someone knows, or is also guessing?
Can I throw a complete disassembler of a piece of ROM here?
Here's a little:
;use of restarts has been noticed:
;#81 (disk BIOS), functions #01,#02,#05,#06,#28.
;#82 (working with BIOS variables), offsets #0D,#1D.
ORG #0826BIOS EX (SP),HL ;package RST 8. BIOS EX (SP),HL.
PUSH AF
LD A,#CF
LD (L5CBF),A
LD A,(HL)
INC HL
LD (L5CC0),A
LD A,#C9
LD (L5CC1),A
POP AF
EX (SP),HL
PUSH HL
LD HL,L3D2F
EX (SP),HL
PUSH HL
LD HL,L5CBF
EX(SP),HL
RET
LD DE,L4000
LD A,#7
JP #0B
L84C RST #20
LD D,H
RRA
RET C
RST #20
LD A,E
DEC DE
LD A,(L5CF6)
LD BC,L7FBA
IN C,(C)
CP #1
JR Z,L867
JR NC,L86B
BIT 7,C
JR NZ,L8A3
JR L86F
L867 BIT 6,C
JR NZ,L8A3
L86B CP #4
JR NC,L8A3
L86F LD,(L5CF4)
LD HL,(L5D00)
LD BC,L105 ;
LD A,(L5CFE)
CP #A0
JR NZ,L881
INC C ;small scale
L881 CALL BIOS
DEFB #81
JR C,L88B
POP HL
POP OF
EI
RET
[this page]
RST #38
RST #38
LD (L5CF6),A
LD BC,L7FBA
IN C,(C)
CP #1
JR Z,L914
JR NC,L917
BIT 7,C
RET NZ
JR L91A
L914 BIT 6,C
RET NZ
L917 CP #4
RET NC
L91A OR #80LD C,#28;
CALL BIOS ;subject-to-subject.
DEFB #81
LD A,(L5CF6)
JR NC,L92D
CP #2
RET C
L92A JP L3EE7
L92D LD HL,L5D1
LD C,A
LD A,#3C
OR C
LD (HL),A
LD A,(L5CF6)
LD C,#1 ;St
CALL BIOS
DEFB #81
JR C,L92A
CALL L3E08
LD (HL), #0
CALL L3E11
LD (HL), #8
LD A,#8
LD (L5CCD),A
POP HL
RET
[this page]
RST #38
RST #38
LD A,(L5CF6)
PUSH BC
LD BC,L7FBA
IN C,(C)
CP #1
JR Z,LA16
JR NC,LA1A
BIT 7,C
JR NZ,LA2D
JR LA1E
LA16 BIT 6,C
JR NZ,LA2D
LA1A CP #4
JR NC,LA2D
LA1E POP BC
LD D,C
PUSH BC
LD C,#2;
CALL BIOS ;Obvious BIOS
DEFB #81
POP BC
JP C,L3EE7
POP HL
RET
LA2D POP BC
JP L1FEB
LD A,(L5CF6)
LD BC,L7FBA
IN C,(C)
CP #1
JR Z,LA45
JR NC,LA49
BIT 7,C
JR NZ,LA4F
JR LA4D
LA45 BIT 6,C
JR NZ,LA4F
LA49 CP #4
JR NC,LA4FLA4D POP HL
RET
WBR Jason.
Powered by ScorpionZS256turbo+/SMUC/HDD'IDE130Mb/FDD'800/
/CMOS/Cache8k/Covox/ATkbd/Mouse/CDOS...