asm-1
ZXNet echo conference «code.zx»
From Eugene Palenock → To All 25 February 2001
Hello All!
I wrote this for some reason... ;)
It only works on GRM, because it uses the output point in
port at 3C30 and 3C33. And it also works for those
who installed my TRDOS 5.04F
This procedure has no practical benefit.
it has, but it just works beautifully ;)
ORG #8000.0
D.I.
LD HL,#3C30
CALL DREAD
CP#DB
JR NZ,ERROR
LD HL,#3C33
CALL DREAD
CP#D3
JR Z,EP05
LD HL,DOUT1F_
LD (DS1),HL
LD (DS2),HL
LD (DS3),HL
LD (DS4),HL
EP05 CALL TRK00
CALL TRK84
CALL DSTOP
EP19 RET
LD A,2
OUT(#FE),A
JR EP21
EP21 CALL EP20
LD A,4
OUT(#FE),A
CALL EP20
JR EP19
EP20 LD B,#72 ;MULTICOLOR ;-)
EP22 DJNZ EP22 ;
LD A,0
IN A,(#FE)
XOR A
RET NC
ERROR LD A,2
CALL #1601
LD DE,TEXT
XOR A
CALL #C0A
JR EP19
TEXT (SP) #80,#16,0,0,#11,0,#10,7
(SP) "Sorry, only for TR-DOS of GRM",#80+#20
;
; 'SYNCHRONOUS' MOVE ALL HEADS TO 84 TRACK
;
TRK84 LD B,83 ; NUMBER OF TRACKS - 1
LD C,#FF ;SYSTEM PORTLD D,#48 ;TEAM 'STEP FORWARD'
L_STEP LD A,#4C+3
CALL DOUT
LD A,D
CALL DOUT1F
DS1 EQU$-2
LD A,#4C+2
CALL DOUT
LD A,D
CALL DOUT1F
DS2 EQU$-2
LD A,#4C+1
CALL DOUT
LD A,D
CALL DOUT1F
DS3 EQU$-2
LD A,#4C+0
CALL DOUT
LD A,D
CALL DOUT1F
DS4 EQU$-2
DJNZ L_STEP
RET
;
; TO STOP THE ENGINE - STEP WITH HEAD RAISED AND
; INTERRUPTION IMMEDIATELY.
;
DSTOP LD C,#1F
LD A,#60
CALL DOUT
LD A,#D0
JP DOUT
;
; 'SYNCHRONOUS' MOVE TO TRACK 0
;
TRK00 LD DE,#580F
NER BIT 3,E
JR Z,NE02
LD C,#FF
LD A,#4C+3
CALL DOUT
LD C,#1F
LD A,#68
CALL DOUT
N30 CALL DIN1F
RRA
JP C,N30
RRA
RRA
JP NC,NE02
RES 3,E
NE02 BIT 2,E
JR Z,NE01
LD C,#FF
LD A,#4C+2
CALL DOUT
LD C,#1F
LD A,#68
CALL DOUT
N20 CALL DIN1F
RRA
JP C,N20
RRA
RRA
JP NC,NE01
RES 2,E
NE01 BIT 1,EJR Z,NE00
LD C,#FF
LD A,#4C+1
CALL DOUT
LD C,#1F
LD A,#68
CALL DOUT
N10 CALL DIN1F
RRA
JP C,N10
RRA
RRA
JP NC,NE00
RES 1,E
NE00 BIT 0,E
JR Z,NE
LD C,#FF
LD A,#4C+0
CALL DOUT
LD C,#1F
LD A,#68
CALL DOUT
N00 CALL DIN1F
RRA
JP C,N00
RRA
RRA
JP NC,NE
RES 0,E
NE LD A,#F
AND E
RET Z
DEC D
JP NZ,NER
RET
DOUT LD HL,#2A53
PUSH HL
JP #3D30
DIN1F LD HL,#3C30
PUSH HL
JP #3D30
DOUT1F LD HL,#3C33
PUSH HL
JP #3D30
DREAD LD DE,#207
PUSH DE
LD A,#FF
AND A
JP #3D30
DOUT1F_ LD C,#1F
CALL DOUT
DT1F_1 CALL DIN1F
RRA
JP C,DT1F_1
LD C,#FF
RET
NOP
END NOP
* Оригинал написан в ZX.SPECTRUM
* Скопировано в CODE.ZX
С уважением, Евгений.