Turbo loader
ZXNet echo conference «code.zx»
From Oleg Grigoriev → To Yuri Nazarenko 25 July 1999
Let your enemies, Yuri, die without sons!
Thu 15 Jul 1999 at 23:01, Yuri Nazarenko ═> Oleg Grigoriev:
OG>> In the usual way. Only interruptions are never prohibited. After
OG>>readings
OG>> sectors
OG>> you check “was there any data loss?”
YN> The usual way is through #3d13 ? And how to make it so
YN> interrupts were never disabled. I tried to do this
YN> as follows:
YN> org 23746
YN> ei
YN> ret
YN> that is, at address 23746 I set interrupt enable. How am I?
YN> I know tr-dos accesses this address regularly.
It's pointless. They are prohibited anywhere. Via #3d2f,
naturally.
YN> And how can you check “was there any data loss?”
By checking the corresponding bit of the status register. However, that's enough
find out there was an error. It doesn't matter which one. #2099 is enough in this regard
universal entry point.
OG>> Or do you just need the source? Well, about ten minutes of work. :)
YN> Well, if possible, I would like to see.YN> Thanks in advance.
Well, it didn’t take ten minutes (mainly because of the curb), and
I braked thoroughly; but here it is:
────[ The file multi_ld.C begins here ]───────────────────────
DRIVE EQU #00
ORG #6000
LD HL,#BE00
LD (HL),H:INC (HL),L:JR NZ,$-#03
LD A,H,I,A
INC H:LD (HL),H,L,H
LD (HL),#C3:INC L
LD (HL),INT]:INC L
LD(HL),INT[
IM 2
EI
LD A,#3C!DRIVE:CALL TOPRFF
LD A,#08:CALL COMWG
LD B,#01,DE,#2604
LOOP PUSH BC
LD B,#1B,HL,#4000
LOOP1 CALL RSEC:JR C,LOOP1
INC H,E:BIT 4,E:JR Z,$+#05
LD E,#00:INC D
DJNZ LOOP1
POP B.C.
DJNZ LOOP
HALT
XOR A:IN (#FE):CPL:AND #1F
JR Z,$-#07
RET
;************************************************
;
INT PUSH AF,BC
LD A,#01:OUT (#FE)
INTD LD B,#3E
INTD1 LD A,#0E:DEC A:JP NZ,$-#01
NOP
DEC B:JR NZ,INTD1
LD A,#04:DEC A:JP NZ,$-#01
LD A,#07:OUT (#FE)
.3 NOP
RLCA:DEC A:JP NZ,$-#01
OUT (#FE)
;---------------------------------------
INTT LD A,#00:OR A
LD A,(INTD+#01):JR NZ,INTT0
INC A:CP #3F:JR NZ,INTT1
LD(INTT+#01),A
JR INT1
INTT0 DEC A:JR NZ,INTT1
LD(INTT+#01),A
JR INT1
INTT1 LD (INTD+#01),AINT1 POP BC,AF
EI
JP #3D2F
;***************************************
;
RSEC PUSH HL,DE,BC
SRL D
LD A,#3C!DRIVE:JR NC,$+#04
LD A,#2C!DRIVE
CALL TOPRFF
LD A,D:CALL TOPR7F
LD A,#18:CALL COMWG
LD A,(#5CD6):PUSH AF
LD A,E:INC A:CALL TOPR5F
LD BC,RSEC1:PUSH BC
LD BC,$:PUSH BC
LD B,#01:PUSH BC
LD BC,#2099:PUSH BC
LD BC,#3FD7:PUSH BC
LD A,#80:CALL TOPR1F
LD BC,#017F,D,C
JP #3D2F
RSEC1 POP BC:LD A,(#5CD6)
CP B
LD A,B,(#5CD6),A
POP BC,DE,HL
SCF:RET NZ
CCF:RET
;---------------------------------------
;
COMWG CALL TOPR1F
INTRQ LD IX,#3FE5:JR DOS
TOPR1F LD C,#1F:JR TOPR
TOPR5F LD C,#5F:JR TOPR
TOPR7F LD C,#7F:JR TOPR
TOPRFF LD C,#FF
TOPR LD IX,#2A53
DOS PUSH IX:JP #3D2F
────[ Здесь кончается файл multi_ld.C ]────────────────────────
Бордюрное барахло фиксено под вэйтовый в нетурбе скорп. Мой скорп. :)
[ WBR, Oleg. ]
[ 19:39 25 July XXXIV A.S. ]