BASEX2 ASM ;------------------------------
;Diskettenroutinen f}r BASIC
; (mit Fehlertexten)
;
;Adressen: 0200 0300 026A
;
;BASEX2.ASM ` ml 08.08.93
;------------------------------
H150 EQU 150H ;Adr. CALL*150
SUTAB EQU 0B7B0H
IOERR EQU 0B7C9H
PV1 EQU 0F003H
AHEX EQU 1CH
OCHR EQU 24H
IRMON EQU 0F018H
IRMOF EQU 0F01BH
;-------
ORG 200H
RUN: DB 0 ;1 ->RUN-Switch
SUSP: DW 0 ;Speicher SUTAB
;-------
MBOUT: LD BC,8EF3H
OUT (C),A ;Datenbyte
LD A,D
AND 48H
OR 37H
CALL NAMOUT
BIT 6,A ;close?
JR Z,O1
LD D,A
LD A,(RUN)
AND A
LD A,D
JR Z,O1
SET 7,A ;run-switch
O1: OUT (C),A ;Steuerbyte
O2: IN A,(C)
BIT 0,A ;fertig?
JR NZ,O2
RLCA
SET 0,(IX+8);Taste gedr}ckt
RET NC
ERR: LD BC,83F1H
IN A,(C)
CP 20H ;DEP ab 2.0?
JR NC,ERRTX;ja
LD BC,81F3H
IN A,(C)
CALL PV1
DB AHEX ;Fehler-Nr.
ERRE: LD HL,(IOERR)
PUSH HL
JP IRMOF
ERRTX: LD B,0 ;Fehlertext
ERRT1: IN A,(C)
JR Z,ERRE ;00-Ende
INC B
CALL PV1
DB OCHR
JR ERRT1
;-------
MBIN: LD A,D
AND 48H
OR 35H
CALL NAMOUT
OUT (C),A ;Steuerbyte
I1: IN A,(C)
BIT 0,A ;fertig?
JR NZ,I1
RLCA
JR C,ERR ;Fehler
LD B,8EH
IN A,(C) ;Datenbyte
RET
;-------
;Selbststart beim Laden:
;
START: LD HL,UMS
LD DE,H150
LD BC,UMSE-UMS
LDIR
LD HL,(SUTAB)
PUSH HL ;SUTAB alt
LD (SUSP),HL
LD DE,START;SUTAB neu
LD (SUTAB),DE
LD BC,92H ;L{nge SUTAB
LD HL,MBOUT
EX (SP),HL
PUSH HL ;SUTAB alt
LD HL,MBIN
EX (SP),HL
JP H150+DISK-UMS
;-------
;Umschaltung Kassette/Diskette:
;(wird nach 150H verschoben)
;
UMS: CALL IRMON
LD HL,(SUSP)
LD DE,(SUTAB)
LD (SUTAB),HL
LD (SUSP),DE
CALL IRMOF
RET
;-------
;Dateiname ausgeben:
;
NAMOUT EQU $-UMS+H150
LD BC,83F3H
BIT 3,A ;open?
JR Z,NAE
LD E,11 ;Anzahl
NAW: OUTI
INC B
INC B
DEC E
JR NZ,NAW
NAE: LD B,80H ;BC f}r Steuer-
RET ;byte
;-------
;SUTAB-neu ab Adr. START aufbauen:
;
DISK: LDIR
POP HL
LD (START+6EH),HL
POP HL
LD (START+70H),HL
RET
UMSE: ;Ende der Umschaltroutine
;-------
DB '080893' ;Datum
DS 300H-$
Å
UMSE:º
DISK:·
NAE:°
NAW:e
NAMOUT:’
UMS:j
START:\
I1:R
MBIN:G
ERRT1:E
ERRTX:>
ERRE:,
ERR:
O2:
O
DS 300H-$
Å
UMSE:º
DISK:·
NAE:°
NAW:e
NAMOUT:’
UMS:j
START:\
I1:R
MBIN:G
ERRT1:E
ERRTX:>
ERRE:,
ERR:
O2:
O
Detected encoding: ANSI (CP1252) | 4
|
|