(C) VfNG / NEW
I suggest to my fullest yuzaniyu devepoled Turbo Loader with
full error checking. He checked on all those caught me by the
arm machines (Profi, Pentagon, 'Leningrad', 'Byte') and works
great! Please, just do not fix it, some 'obvious folly'. The
fact is that one disk interface, which we
use in Brest, is engaged in emulation
TR-DOS, therefore, some procedures ROMs do not work as
expected, and sometimes spoil some registers ... For example #
2A53 in our sticks JP where is converter.
Individual treatment to all the brethren: do not meddle in
TR-DOS with Register R (except in # 3D2F, # 3D30 possible)
pomrets.
;----------------------------------------;' NEW 'TURBO LOADER
BY VfNG' 96 ; NEW ORIGINAL CONCEPTION + FULL ERROR
; CONTROL!
;---------------------------------------- RETRY EQU 3; number
of attempts to read
; Bad sector to
; Repositioning
;----------------------------------------
ORG # 8000
;----------------------------------------; Section
initialization. Sufficient duration; vat once.
;---------------------------------------- INIT DI
LD A, # 3F; Setting vector
LD I, A; I in the 'fast' parameters
; Crease.
LD A, (# 5D16); definition
AND 3, disc type
LD (REG +1), A; water.
LD HL, # 5CC8;
ADD A, L
LD L, A
BIT 1, (HL)
JR NZ, LOAD8
LD HL, # A700
LD (POKE1), HL
LD (POKE2), HL
LD (POKE3), HL
LD A, # 37
LD (POKE4), A
;----------------------------------------; Positioning.
DE-trek/sektor. If ; Already sticks out on this track, it is
possible and ; Not cause
;---------------------------------------- LOAD8 CALL POSIT
RET
;----------------------------------------; End of
initialization. Now we own; respectively loader: ; HL-where,
B-number, DE-how ; Returns: DE-current track / sector
; HL-mail, which was loaded
; The last byte of a
;---------------------------------------- LOAD DI
LOAD5 PUSH DE
CALL SECTOR
POP DE
INC H
INC E
LD A, E
CP # 10
JR Z, LOAD2
LOAD6 DJNZ LOAD5
RET
LOAD2 LD A, D
POKE4 RRA
PUSH AF
LD A, # 3C
JR C, LOAD1
LD A, # 2C
LOAD1 CALL REG
POP AF
LD C, # 3F
CALL PORT
INC D
LD E, 0
LD A, D
POKE1 SRL A
LD C, # 7F
CALL PORT
LD A, # 18
LD IX, # 2FC3
CALL DOS
JR LOAD6
;---------------------------------------- SECTOR LD C, RETRY
SECTOR1 PUSH BC
LD A, E
INC A
LD C, # 5F
CALL PORT
LD A, # 80
LD C, # 1F
CALL PORT
PUSH HL
LD C, # 7F
LD IX, # 3FE5
CALL DOS
CALL STATUS
POP HL
POP BC
RET Z
DEC C
JR NZ, SECTOR1
CALL REPOS
JR SECTOR
;---------------------------------------- STATUS PUSH DE
XOR A
LD C, # 3F
CALL PORT
LD A, # 0A
LD C, # 5F
CALL PORT
LD D, 1
LD IX, # 3F33
CALL DOS
POP DE
LD A, B
AND # 7F
PUSH AF
LD A, D
POKE2 SRL A
LD C, # 3F
CALL PORT
POP AF
RET
;---------------------------------------- REPOS LD A,% 11011000
CALL COMM2
LD A, 8
CALL COMM3
;---------------------------------------- POSIT LD A, D;
Positioning POKE3 SRL A
PUSH AF
LD A, # 2C
JR C, REPOS1
LD A, # 3C
REPOS1 CALL REG
POP AF
LD C, # 7F
CALL PORT
LD A, # 18
JR COMM3
;---------------------------------------- REG OR 0
LD IX, # 1FF3
DOS PUSH IX
JP # 3D30
PORT LD IX, # 2A53
JR DOS
COMM2 LD IX, # 2F57
JR DOS
COMM3 CALL COMM2
LD C, 5; very, it seems, camping, long pause, but
otherwise this is not crap ; Will work on the 'byte'.
COMM3_1 PUSH BC
LD IX, # 3DFD
CALL DOS
POP BC
DEC C
JR NZ, COMM3_1
RET
;----------------------------------------
That's it! We kindly request if
anyone have a trick And this does not work, write immediately
to the Echo!