DISKU ASM
;*** Tape-Unit ***
ESC1 LD A,(IX+7)
XOR 2
LD (IX+7),A
RET
IMBII ;intern mit Standardpuffer,
;Erwarteter Block und Unter-
;dr}ckung OK-Block
CALL SIXD3
LD (IX+3),1
SET 5,(IX+7)
RET
ISRI
LD A,9
LD (IX+1),1
JR INTERF
PHALT LD A,3
OUT 8CH,A
OUT 8DH,A
RES 1,(IX+8)
RET
CMBI ;Abschlu~ MB-Eingabe
LD A,41H
CALL INTERF
JR CRO0
BLION ;Blinken on
IN A,89H
SET 7,A
OUT 89H
DI
LD A,47H
OUT 8EH
LD A,0CH
OUT 8EH
EI
RET
CSRO ;Abschlu~ MB-Ausgabe mit
;Schreiben letzter Block
LD (IX+2),0FEH;UP 09 CSRO
LD A,43H
CALL INTERF
CRO0 PUSH HL
LD HL,0B780H
XOR A
CRO1 DEC L
LD M,A
JR NZ,CRO1
POP HL
CALL CRLF
JP SIXD2
ISROI CALL SIXD3 ;intern
ISRO LD A,0BH ;UP 08 ISRO
LD (IX+2),1
JR INTERF
;
MBOT INC (IX+2) ;UP 01 MBOT
LD A,3
INTERF ;Allgemeines, block- oder
;byteweises Dateninterface
;PE: A:Funktion wie bei D004
;(A=0: BASIC-Funktionen)
;D: Datenbyte (bei BASIC)
;E: Unterfunktion (bei BASIC)
;(IX+6)/(IX+7): Blockzeiger
;HL: Ende +1
;CY=1: Fehler
;A: Fehlernummer (CC bei Kass.)
;(CF bei BRK)
PUSH HL
LD HL,(0B7E9H)
EX (SP),HL
RET
STDIO
CALL BRKT
RET C
CALL INTERF
RET NC
CP 0CFH
SCF
RET Z
PUSH AF
CALL NERRM
POP AF
RET
STDINT ;Standard-Interface: Diskette
OR A
JR Z,BASIO
BIT 1,A
JR Z,DREAD
LD L,(IX+6)
LD H,(IX+7)
CP 0BH
JR NZ,NOINID
PUSH HL
CALL NAMEOTD
POP HL
NOINID
LD BC,81F2H
LD E,80H
ODBL OUTI
INC B
INC B
DEC E
JR NZ,ODBL
;
DKDO LD BC,80F3H
OUT (C),A
ODBL2 CALL BRKT
LD A,0CFH ;Endekennung
RET C
IN A,(C)
BIT 0,A
JR NZ,ODBL2
ADD A ;CY erzeugen
INC B
IN A,(C) ;Nummer
RET
BASIO
LD A,E
BIT 1,A
JR Z,BREAD
LD BC,8EF3H
OUT (C),D
JR DKDO
;
BREAD CALL DKDO
LD B,8EH
IN D,(C)
RET
DREAD PUSH HL
PUSH DE
CP 9 ;Init?
JR NZ,NOINI
XOR A
LD (0B7DCH),A
LD B,11
NMTST LD A,M
INC HL
CP 20H
JR C,KNME
CP 7FH
JR NC,KNME
CP '.'
JR NZ,KPKT
INC B
KPKT DJNZ NMTST
JR GEFUND
KNME CALL OSTR
DEFW 0DH
LD DE,(0B7A0H)
CALL DABR
LD B,2
LD DE,-40
ADD HL,DE
UKI2 LD DE,NAMEPTR
LD C,6
UKI1 LD A,(DE)
INC DE
SUB M
INC HL
AND 0DFH ;Upcase
JR NZ,UNGL
DEC C
JR NZ,UKI1
JR GEFUND
UNGL LD DE,-46
ADD HL,DE
DJNZ UKI2
CALL NAMEIN
LD A,0CFH
JR C,DBRK
GEFUND LD A,9
NOINI CALL NAMEOTD ;eintragen
LD A,(0B7DCH)
INC A
LD (0B7DCH),A
LD (IX+2),A
CALL DKDO ;Kommando
JR C,DBRK
LD L,(IX+5)
LD H,(IX+6)
LD BC,80F2H
SEKTOR INI
INC B
INC B
JR NZ,SEKTOR
DBRK POP DE
POP HL
RET
NAMEOTD ;Name in Diskpuffer schreiben
LD BC,82F3H
LD E,12
NOTD1 OUTI
INC B
INC B
DEC E
JR NZ,NOTD1
RET
;
MBI LD A,1 ;UP 05 MBI
JP INTERF
;*** ISR's f}r die Kassette ***
ISRC1 PUSH AF ;ISR CTC 1 MBO
LD A,87H
OUT 8DH,A
LD A,(IX)
OUT 8DH,A
LD (IX),0
JR IMBEND
ISRPA PUSH AF ;ISR PIO A MBI
IN A,8EH
LD (IX),A
LD A,7
OUT 8EH,A
LD A,0A3H
OUT 8EH,A
IMBEND POP AF
INTEND EI
RETI
;====== BASIC-ERWEITERUNG =====
Detected encoding: ASCII (7 bit) | 2
|