; *****************************************
;
; TRANS   (C) JUERGEN WEBER 1986/1987
;
; *****************************************


ORG     #8000
ENT     $



DESTI1:EQU      #C5F0   ; TRANS KOMMT AN 3
DESTI2:EQU      #CDF0   ; VERSCHIEDENEN STELLEN IN
DESTI3:EQU      #D5F0   ; SCREENRAM (DAMIT AUCH TEXT MOEGLICH)
DESTI4:EQU      #DDF0

AUTO:EQU        #BD80   ; ZWISCHENSPEICHER FUER FILEDATEN
TYP:EQU #BD82
START:EQU       #BD83
LEN:EQU #BD85
DISCA1:EQU      #BD8B
DISCA2:EQU      #BD8D

QU:EQU  #BD87
ZI:EQU  #BD89
FNAME1:EQU      #EE00
FNAME2:EQU      #E600


LADE:EQU        #3B     ; DORT KOMMT JEDES FILE HIN
INBUF:EQU       LADE
OBUF:EQU        INBUF+#800

BEGIN:

INC     A
JR      Z,SETSYM
RST     0
DEFM    " TRANS VERS. "
DEFM    "15.6.87 "      ; LETZTE AENDERUNG

UE:DEFB #66,0,#66,#66   ; ue
DEFB    #66,#66,#3E,0
DEFB    #66,0,#3C,#66   ; oe
DEFB    #66,#66,#3C,0
DEFB    #CC,0,#78,#C    ; CC CALL Z,nn
DEFB    #7C,#CC,#76,0

SYMTAB:EQU      #BD61

SETSYM:
LD      SP,#6000
LD      DE,"{"  ; SYMBOL AFTER 123
LD      HL,SYMTAB       ; SYMBOLTABELLE
CALL    #BBAB   ; TXT SET M TABLE

CALL    #BB00   ;  KM INITIALISE
CALL    #BB51   ; TXT INITIALISE
CALL    #BBBA   ; GRA INITIALISE
CALL    #BBFF   ; SCR INITIALISE

LD      DE,SYMTAB
LD      HL,UE
LD      BC,8*3
LDIR    ; MATRIX KOPIEREN

LD      C,7
LD      HL,#B0FF
CALL    #BCCE   ; AMSDOS INITIALISIEREN

LD      A,2
LD      BC,#F0F ; INK 2,15
CALL    #BC32

LD      A,3     ; INK 3,11,24
LD      BC,#A18
CALL    #BC32

LD      HL,#A0F ; SPEED INK 20,30
CALL    #BC3E


AMSDOS:
LD      BC,#BC06        ; 25 ZEILEN ANZEIGEN
OUT     (C),C
LD      BC,#BD19
OUT     (C),C   ; DEFAULT

LD      HL,MENU
CALL    PRINT   ; MENUE AUSGEBEN

LD      DE,539  ; ** DIE FOLGENDE ROUTINE
LD      HL,358  ; ZEICHNET EINEN STERN
CALL    #BBC0   ; MOVE 539,358

LD      A,3     ; GRA PEN 3
CALL    #BBDE
LD      A,"W"   ; TAG:?"W";:TAGOFF
CALL    #BBFC
LD      A,2
CALL    #BBDE   ; GRA PEN 2

LD      DE,480
LD      HL,290
CALL    #BBC0   ; MOVE 480,290

LD      IX,DRDATA       ; ECKEN DES STERNS
LD      B,5     ; 5 ECKEN
PLOOP:
PUSH    BC
LD      E,(IX+0)
LD      D,(IX+1)
LD      L,(IX+2)
LD      H,(IX+3)
CALL    #BBF6   ; DRAW DE,HL
LD      B,4
PL1:INC IX
DJNZ    PL1
POP     BC
DJNZ    PLOOP
LD      HL,DISK
CALL    KLFCOM

L1:
CALL    #BB06   ; INKEY$
CP      "0"
JP      Z,0     ; PROGRAMMENDE
CP      13      ; ENTER
JR      NZ,$+4
LD      A,"4"   ; FUEHRT ZU DISC-DISC
SUB     "1"
JR      C,L1    ; <"1"
LD      I,A
CP      6       ; LAUFWERK WECHSELN
JP      Z,CHNDRI
JR      NC,L1   ; ANDERE TASTE ALS "1"-"5"
CP      5
JP      Z,USER  ; USER SETZEN

CP      4
JP      Z,LOESCH

CP      1       ; TAPE-DISC
LD      HL,TAPEIN
JR      Z,W1
CP      3       ; DISC-DISC
LD      HL,DISK
JR      Z,W1

SPEED?:
LD      HL,FAST ; "AUFZEICH..."
CALL    PRINT
SPE:
CALL    #BB06   ; INKEY$
CP      13      ; ENTER = SPEED WRITE 1
JR      NZ,$+4
LD      A,"2"
CP      "1"
LD      HL,#14E ;SPEED WRITE 1
LD      B,#19
JR      Z,SETSP
CP      "2"
LD      HL,#A7
LD      B,#32
JR      Z,SETSP
CP      "3"
LD      B,#A
LD      HL,#7E
JR      NZ,SPE
SETSP:LD        A,B
CALL    #BC68   ; CAS SET SPEED
LD      HL,TAPEOU
LD      A,I
JR      Z,W1    ; DISC-TAPE
LD      HL,TAPE


W1:
CALL    KLFCOM

LD      A,2
CALL    #BC0E   ;MODE 2
LD      HL,#4F12        ;WINDOW 1,80,1,19
LD      DE,0
CALL    #BB66   ;WINDOW ENABLE

LD      BC,#BC06        ; NUR 13H ZEILEN
OUT     (C),C
LD      BC,#BD13
OUT     (C),C

LD      HL,PROG ; * PROGRAMM IN SCHIRMRAM *
LD      DE,PROG+DIST1
LD      BC,PROG2-PROG
LDIR

LD      HL,PROG2
LD      DE,PROG2+DIST2
LD      BC,USER-PROG2
LDIR

LD      HL,AMSDOS
LD      DE,AMSDOS+DIST3
LD      BC,PROG-AMSDOS
LDIR

LD      HL,USER
LD      DE,USER+DIST4
LD      BC,FINIS-USER
LDIR

JP      DESTI1

KLFCOM:
XOR     A       ;KEIN PARAMETER
DEFB    #FD     ; LD LX,A
LD      L,A
CALL    #BCD4   ;KL FIND COMMAND
JP      NC,0    ; RESET
DEFB    #FD     ; LD A,LY
LD      A,L     ; PARAMETERZAHL
JP      #1B     ; KL FAR PCHL

FAST:
DEFB    12      ;CLS
DEFB    31,1,9
DEFM    "Aufzeichnungsgeschwindigkeit ?"
DEFB    31,10,13
DEFM    "1   1000 Baud"
DEFB    31,10,15
DEFM    "2   2000 Baud"
DEFB    31,10,17
DEFM    "3   3600 Bau"
DEFB    "d"+128

TAPEOU:DEFM     "TAPE.OU"       ; KOMMANDOS FUR KL FIND COMMAND
DEFB    "T"+128
TAPEIN:DEFM     "TAPE.I"
DEFB    "N"+128
TAPE:DEFM       "TAP"
DEFB    "E"+128
DISK:DEFM       "DIS"
DEFB    "C"+128
ERA:DEFB        "E","R","A"+128

DRDATA:; ECKPUNKTE DES STERNS
DEFW    545,399,610,290,480,370,609,370,480,290
PROG:
LD      SP,#C000

ANFA:
CALL    #BC92   ;OUT ABANDON
CALL    #BC7D   ;IN ABANDON


;*************************************
; UBERTRAGUNGSRICHTUNG AUSGEBEN
;*************************************

LD      HL,CLEAN+DIST2  ; CLS:LOCATE 26,1
CALL    PRINT+DIST1

LD      A,I
LD      B,A
INC     B       ; WIEOFT 11+4 ZUM TABBEGINN
LD      HL,CAS1-15+DIST2
LD      DE,15
TABLOO:ADD      HL,DE
DJNZ    TABLOO
CALL    PRINT+DIST1     ; HL=TITELSTRING
PUSH    HL

LD      HL,CAS5+DIST2   ; "TRANSFER"
CALL    PRINT+DIST1
POP     HL
LD      E,(HL)  ; SPAETERER STRING
INC     HL
LD      D,(HL)
LD      (DISCA2),DE     ;ZIELNAME
INC     HL
LD      E,(HL)
INC     HL
LD      D,(HL)
PUSH    DE      ; QUELLNAME


LD      DE,LADE ; BUFFER
LD      A,I
JR      Z,CAT
CP      3       ; DISC-DISC
CAT:
LD      A,11    ; CURSOR HOCH
PUSH    AF
CALL    Z,#BC9B ;CAT
POP     AF
CALL    Z,#BB5A


; ***************************
;  QUELLNAMEN HOLEN
; ***************************

LD      HL,ST0+DIST2    ; "NAME AUF.."
CALL    PRINT+DIST1

POP     HL
CALL    PRINT+DIST1     ; "DISK/KAS"

LD      HL,ST4+DIST2
CALL    PRINT+DIST1     ; "SETTE

LD      HL,FNAME1
PUSH    HL
CALL    GETLEN+DIST1    ; EDIT UND LAENGE FESTSTELLEN
POP     HL
LD      DE,INBUF        ; BUFFER

; *****************
; OPENIN
; *****************
CALL    #BC77   ;CAS IN OPEN

JP      NC,DELAY+DIST2

PUSH    HL
POP     IX      ; HEADER
LD      (TYP),A ; FILEDATEN RETTEN
LD      (START),DE
LD      (LEN),BC
LD      H,(IX+27)
LD      L,(IX+26)       ; AUTOSTART
LD      (AUTO),HL

CALL    TSTORT+DIST2    ; TEST AUF GUELTIGEN BEREICH

; ******************
; FILEDATEN AUSGEBEN
; ******************

PUSH    HL

LD      HL,TYPSTR+DIST2
LD      A,(TYP)
PUSH    AF
AND     %1110
ADD     A,#24   ; CHARAKTER CODE HERSTELLEN
LD      (ENTYP+DIST2),A
CALL    PRINT+DIST1
POP     AF
CALL    BYTOUT+DIST1

LD      A,B     ; WENN ASCII DANN LAENGE 0
OR      C
JP      Z,ASCII+DIST1

LD      HL,STASTR+DIST2 ; "START"
CALL    PRINT+DIST1

LD      H,D
LD      L,E     ; START
CALL    ZWBOUT+DIST1    ; HEZZAHL IN HL AUSGEBEN

LD      HL,LENSTR+DIST2
CALL    PRINT+DIST1

LD      H,B     ; "LAENGE
LD      L,C
CALL    ZWBOUT+DIST1    ; HEZZAHL IN HL AUSGEBEN

LD      HL,ATOSTR+DIST2 ; "AUTOSTART"
CALL    PRINT+DIST1

POP     HL      ; AUTOSTART
CALL    ZWBOUT+DIST1    ; HEZZAHL IN HL AUSGEBEN

LD      A,11
CALL    #BB5A   ; CSR ^

; **************
;  LADEN
; **************

IND:
LD      HL,LADE ;ES WIRD JEDES FILE NACH 3B GELADEN
CALL    #BC83   ;CAS IN DIRECT
JP      NC,DELAY+DIST2

CALL    #BC7A   ;IN CLOSE

; ************
; OUT OPEN
; ************

CALL    OOPEN+DIST1     ; NAMENEINGABE,OUT OPEN

LD      HL,LADE-1       ;DATEN ZUR VERSCHIEBUNG
LD      DE,(LEN)        ;DES FILES FESTSTELLEN
ADD     HL,DE
LD      (QU),HL ; OBERGRENZE DER ZWISCHENLAGERUNG
LD      HL,(START)
LD      B,H     ; HIGHBYTE LADEADR
DEC     HL
ADD     HL,DE
LD      (ZI),HL ; OBERGRENZE NORMAL


LD      A,#BF
SUB     B       ; HIGHBYTE ADRESSE >BF?
JP      C,PROG2+DIST2   ; NACH PROG2 SCREEN

; **********
; SAVEN
; **********

CALL    VERSCH+DIST1
JP      NC,DELAY+DIST2

CALL    #BC8F   ;OUT CLOSE

ANFVEC:JP       ANFA+DIST1+6    ; '6' DA AUF ANFA ABANDON

; ***************
; ASCIIUEBERTRAGUNG
; ***************


ASCII:
LD      A,I
CP      3
JR      Z,ASDD  ; ASCII DISC-DISC

CALL    OOPEN+DIST1
ASC:
CALL    #BC80   ;IN CHAR
JR      NC,ASFER        ;EOF MET
CALL    #BC95   ;OUT CHAR
DELVEC:JP       NC,DELAY+DIST2
JR      ASC
ASFER:
JP      Z,DELAY+DIST2   ; (C)ANCEL...
CALL    #BC8F   ; CAS OUT CLOSE
JP      ANFA+DIST1+3    ; IN ABANDON

ASDD:; ASCII DISC-DISC
LD      HL,OBUF+#800-1
LD      BC,#AC00-OBUF-#800      ; MAX. SPEICHER
A1:
CPI
JP      PO,MEMFUL+DIST1
CALL    #BC80   ; CAS IN CHAR
LD      (HL),A
JR      C,A1
JR      Z,DELVEC
CALL    #BC7A   ; CAS IN CLOSE
CALL    OOPEN+DIST1
LD      HL,OBUF+#800
A2:LD   A,(HL)
CP      #1A     ; EOF
JR      Z,ASFER+3
CALL    #BC95   ; CAS OUT CHAR
JR      NC,DELVEC
INC     HL
JR      A2

MEMFUL:
LD      HL,MEMORY+DIST2
CALL    PRINT+DIST1
JR      DELVEC

; *********
OOPEN:
; *********
LD      A,I
CP      3       ; DISC-DISC

LD      A,10
CALL    #BB5A   ; LF
LD      HL,DESDIS+DIST2 ; "DISK EINLEGEN"
CALL    Z,PRINT+DIST1

LD      HL,ST0+DIST2    ; "NAME AUF"
CALL    PRINT+DIST1

LD      HL,(DISCA2)     ; "KASSETTE/DISKETTE"
CALL    PRINT+DIST1

LD      HL,ST4+DIST2    ; "BUCHSTABEN"
CALL    PRINT+DIST1

LD      HL,FNAME2
PUSH    HL
CALL    GETLEN+DIST1
LD      HL,LINEF+DIST2
CALL    PRINT+DIST1

; ** WURDE NUR ENTER GEDRUECKT ?

LD      A,B
OR      A       ; LAENGE=0
LD      DE,FNAME1       ; NACH ENTER 1. NAMEN ANNEHMEN
POP     HL
JR      NZ,INPOK
EX      DE,HL
PUSH    HL
CALL    GETEIN+DIST1    ; NAMENSLAENGE NACH B HOLEN
POP     HL
INPOK:
LD      DE,OBUF ; BUFFER
CALL    #BC8C   ;CAS OUT OPEN
JP      NC,DELAY+DIST2
RET

;********
VERSCH:
;********
LD      HL,(QU) ; PROGRAMM AN TATSAECHLICHE
LD      DE,(ZI) ; BRINGEN (NOETIG FUER OUT DIRECT)
LD      BC,(LEN)
LDDR

VSCHSC:
LD      A,(TYP)
CP      1
JR      NZ,$+3
XOR     A       ; UNPROTECT
LD      HL,(START)
LD      DE,(LEN)
LD      BC,(AUTO)
JP      #BC98   ;CAS OUT DIRECT

GETLEN:
CALL    EDIT+DIST1

PUSH    HL
LD      HL,LINEF+DIST2
CALL    PRINT+DIST1
POP     HL
GETEIN:
LD      B,#FF
LOOP1:INC       B       ; NAMENSLAENGE NACH B
LD      A,(HL)
OR      A
INC     HL
JR      NZ,LOOP1
RET

ZWBOUT:
LD      A,H     ; HIGHBYTE
CALL    BYTOUT+DIST1

LD      A,L

BYTOUT:PUSH     AF
RRA
RRA
RRA
RRA     ; HIGHNIBBEL NACH UNTEN
CALL    NIBOUT+DIST1
POP     AF

NIBOUT:AND      #0F     ; NUR UNTERES NIBBLE
ADD     A,"0"
CP      ":"
JR      C,LETTER
ADD     A,"@"-"9"
LETTER:JP       #BB5A   ; TXT OUTPUT

PRINT:
PUSH    AF
LD      A,(HL)
BIT     7,A     ; STRINGENDE?
RES     7,A     ; BIT 7 LOESCHEN
OUTP:CALL       #BB5A   ;TXT OUTPUT
INC     HL
JR      Z,PRINT+1
POP     AF
RET     ; BIT 7 GESETZT.

EDIT:PUSH       AF

CALL    CLIN+DIST1

RETU:JP NC,INITP+DIST2

POP     AF
RET

CLIN:CALL       #BB09   ; CLEAR INPUT
JR      C,CLIN

PUSH    HL
CALL    #B915   ; KL PROBE ROM
LD      A,H     ; VERSION
POP     HL

LD      (HL),0  ; EINGABEPUFFER LOESCHEN
RRA     ; BIT 0 => CY
JP      C,#BD5B ; 664
RRA     ; BIT 1 => CY
JP      C,#BD5E ; 6128
JP      #BD3A   ; 464

; *******************
; SCREEN UEBERTRAGUNG
; *******************

PROG2:; FILE IM SCREENRAM


LD      HL,EXCHN+DIST2  ; VERTAUSCHER SICHERN
LD      DE,#9000
LD      BC,PROG3-EXCHN
LDIR

LD      HL,LADE+#3FFF   ; ENDE SCHIRM
LD      DE,#FFFF        ; ENDE PROGRAMM
LD      IY,#7FFF        ; ENDE ZWISCHENSPEICHER
LD      BC,#4000

PUSH    BC

JP      #9000

EXCHN:; SCREENS VERTAUSCHEN

LD      A,(DE)  ; PROGRAMM
LDD     ; (HL)=>(DE)
LD      (IY),A  ; ZWISCHENSPEICHER
DEC     IY

JP      PO,PROG3+DIST2-#8000

JR      EXCHN


PROG3:; =SCRLDR

LD      A,#40
CALL    #BC08   ; SCR SET BASE

CALL    VSCHSC+DIST1-#8000

POP     BC      ; #4000

PUSH    AF      ; CY

LD      H,B
LD      L,C
LD      DE,#C000
LD      A,D     ; #C0

LDIR    ; NACH OBEN


CALL    #BC08   ; SCR SET BASE

POP     AF
JP      ANFVEC+DIST1-3  ; WIE NORMALES SAVE ENDEN

INITP:
LD      HL,AMSDOS+DIST3
LD      DE,AMSDOS
LD      BC,PROG-AMSDOS
LDIR

LD      HL,PROG+DIST1
LD      DE,PROG
LD      BC,PROG2-PROG
LDIR

LD      HL,PROG2+DIST2
LD      DE,PROG2
LD      BC,USER-PROG2
LDIR

LD      HL,USER+DIST4
LD      DE,USER
LD      BC,FINIS-USER
LDIR

JP      AMSDOS


DELAY:; VERZOEGERUNGSSCHLEIFE NACH
CALL    ZOGE+DIST2
JP      PROG+DIST1      ; VON VORNE

ZOGE:LD B,0
WL:HALT
DJNZ    WL
LD      A,7
JP      #BB5A

TSTORT:; TEST AUF GUELTIGEN SPEICHERBEREICH
PUSH    HL
PUSH    DE
PUSH    BC
LD      HL,(START)
PUSH    HL
LD      DE,-#3B
ADD     HL,DE
POP     HL
JR      NC,WARN ; START VOR 3B
LD      DE,-#AC00
PUSH    HL
ADD     HL,DE
POP     HL
JR      NC,WARNOK       ; <AC00
LD      DE,-#C000
PUSH    HL
ADD     HL,DE
POP     HL
JR      NC,WARN

WARNOK:POP      BC
POP     DE
POP     HL
RET
WARN:LD HL,WRNSTR+DIST2
CALL    PRINT+DIST1
JR      WARNOK

WRNSTR:DEFB     13,10,7
DEFM    "Warnung. Ung{ltiger Speicherbereich"
DEFB    13,10,"."+128
ST0:DEFB        13,10
DEFM    "Name auf"
DEFB    " "+128

ST1:DEFM        "Dis"
DEFB    "k"+128
ST2:DEFM        "Kas"
DEFB    "s"+128
ST4:
DEFM    "ette ( <ESC> => Men{) ?"
LINEF:DEFB      13,138


CLEAN:DEFB      12,31,26,1,24,32+128
CAS1:DEFM       "Disc - Tap"
DEFB    "e"+128
DEFW    ST2+DIST2,ST1+DIST2
CAS2:DEFM       "Tape - Dis"
DEFB    "c"+128
DEFW    ST1+DIST2,ST2+DIST2
CAS3:DEFM       "Tape - Tap"
DEFB    "e"+128
DEFW    ST2+DIST2,ST2+DIST2
CAS4:DEFM       "Disc - Dis"
DEFB    "c"+128
DEFW    ST1+DIST2,ST1+DIST2
CAS5:DEFM       " Transfer "
DEFB    24,30,138

DESDIS:DEFB     13,10
DEFM    "Legen Sie bitte die "
DEFM    "Ziel"
DEFM    "diskette ein "
DEFB    "!",13,10+128
MEMORY:DEFM     "Asciifile zu lang"
DEFB    "."+128

TYPSTR:DEFB     13,10
DEFM    "Filetyp: "
ENTYP:DEFB      "*"," ","&"+128
STASTR:DEFM     "  Anfang: "
DEFB    "&"+128
LENSTR:DEFM     "  L}nge: "
DEFB    "&"+128
ATOSTR:DEFM     "  Autostart: "
DEFB    "&"+128


USER:

LD      HL,USRSTR
CALL    PRINT
LD      A,(#AC01)
PUSH    AF
RRA
RRA
RRA
RRA
CALL    NIBOUT
POP     AF
CALL    NIBOUT


LD      HL,USTR1
CALL    PRINT


CALL    EING    ; EIN NIBBLE
LD      C,A
LD      A,0
JR      Z,JPAMS ; ENTER
CALL    EING    ; UNTERES NIBBLE
LD      D,A
LD      A,C
JR      Z,JPAMS ; ENTER ANGETROFFEN
RLCA
RLCA
RLCA
RLCA    ; WIRD OBERES NIBBLE
OR      D
JPAMS:LD        (#AC01),A       ; USER SETZEN
CALL    NZ,ZOGE ; 2 SEKUNDEN WARTEN
JP      AMSDOS

; EINGABE VON HEXZAHLEN
;EIN NIBBLE
EING:
CALL    #BB81
CALL    #BB06
CALL    #BB84

CP      13      ; ENTER
JR      NZ,NOTEN
RET
NOTEN:
LD      B,A
SUB     "0"
JR      C,EING  ;JA
CP      9+1
JR      C,FERTIG
LD      A,B
HZAHL:AND       223     ; UPPER$
LD      B,A     ; ASCII
CP      "A"
JR      C,EING
CP      "F"+1
JR      NC,EING
SUB     "A"-10
FERTIG:PUSH     AF
LD      A,B
CALL    #BB5A
POP     AF
RET

LOESCH:

LD      HL,DISK
CALL    KLFCOM

LD      HL,LOES
CALL    PRINT
LD      DE,LADE ; BUFFER
CALL    #BC9B   ; CAT
LD      A,11
CALL    #BB5A   ; CSR HOCH
LD      HL,ST0  ; "NAME AUF"
CALL    PRINT
LD      HL,ST1  ; "DISK"
CALL    PRINT
LD      HL,ST4  ; "KETTE..."
CALL    PRINT

LD      HL,#6000        ; PLATZ FUER NAME
CALL    CLIN    ; EDITOR
JP      NC,AMSDOS       ; ESCAPE
CALL    GETEIN  ; LAENGE NACH B HOLEN

;** STRINGDESCRIPTOR ERZEUGEN **

DESCRI:EQU      #54FF

LD      IX,#5000
LD      HL,DESCRI

LD      (IX),L
LD      (IX+1),H

LD      (HL),B  ; LAENGE
INC     HL
LD      (HL),L  ; 0
INC     HL
LD      (HL),#60        ; NAME
LD      HL,ERA
LD      A,1     ; 1 PARAMETER
CALL    KLFCOM+1        ; NAME FINDEN UND AUSFUEHREN
CALL    ZOGE

JR      LOESCH

LOES:
DEFB    4,2,31,26,1,24
DEFM    " L|schen "
DEFB    24+128

USRSTR:
DEFB    4,1,31,1,10
DEFM    "Bisheriger User "
DEFB    "&"+128
USTR1:DEFB      13,10,10
DEFM    "Neue Usernummer ? "
DEFB    "&"+128

CHNDRI:
LD      HL,DRISTR
CALL    PRINT
LD      A,(#AC00)       ; AKTUELLES DRIVE
ADD     A,"A"
CALL    #BB5A   ; DRIVE AUSGEBEN
LD      HL,NEWDRI
CALL    PRINT
GETDRI:CALL     #BB06
LD      B,0     ; DRIVE 0
CP      13      ; ENTER => A
JR      Z,NWDR
AND     223     ; UPPER$
SUB     "A"
JR      Z,NWDR-1
CP      1
JR      NZ,GETDRI
LD      B,A
NWDR:LD A,B
LD      (#AC00),A
JP      AMSDOS

DRISTR:
DEFB    12,31,1,8
DEFM    "Angemeldetes Laufwerk:"
DEFB    " "+128
NEWDRI:DEFB     13,10,10
DEFM    "Neues Laufwerk ?"
DEFB    " "+128

JR      C,GETDRI

MENU:DEFB       4,1
DEFB    31,7,3
DEFM    "TRANS"
YPOS:EQU        4
XPOS:EQU        7
DEFB    31,XPOS,YPOS+2
DEFM    "Men{"
DEFB    31,XPOS,YPOS+4
DEFM    "1  Disc-Tape"
DEFB    31,XPOS,YPOS+6
DEFM    "2  Tape-Disc"
DEFB    31,XPOS,YPOS+8
DEFM    "3  Tape-Tape"
DEFB    31,XPOS,YPOS+10
DEFM    "4  Disc-Disc"
DEFB    31,XPOS,YPOS+12
DEFM    "5  File l|schen"
DEFB    31,XPOS,YPOS+14
DEFM    "6  User setzen"
DEFB    31,XPOS,YPOS+16
DEFM    "7  Drive wechseln"
DEFB    31,XPOS,YPOS+18
DEFM    "0  Ende"
DEFB    31,7,25
DEFM    "(C) 1986,87  J{rgen Webe"
JUREND:DEFB     "r"+128

FINIS:

ZAENGE:EQU      FINIS-BEGIN
ZAENG1:EQU      PROG-BEGIN
ZAENG2:EQU      PROG2-PROG
ZAENG3:EQU      USER-PROG2
ZAENG4:EQU      FINIS-USER

DIST1:EQU       DESTI1-PROG
DIST2:EQU       DESTI2-PROG2
DIST3:EQU       DESTI3-AMSDOS
DIST4:EQU       DESTI4-USER