home *** CD-ROM | disk | FTP | other *** search
- ;**************************************************************** *
- ;* * *
- ;* Unterprogramm f}r OPEN, CREATE und KILL * *
- ;* * *
- ;**************************************************************** *
-
- .z80 ;
- entry _xfcb ;
-
- test: ld a,(de) ; pr}fe Zeichen auf G}ltigkeit f}r Dateinamen
- cp ' ' ; space?
- ret z ; zero auch bei space
- exx ;
- jr c,invalid_ch ;
- ld b,17 ; Anzahl der ung}ltigen Zeichen
- ld hl,char_tabelle ;
- check_char: cp (hl) ;
- jr z,invalid_ch ;
- inc hl ;
- djnz check_char ;
- exx ;
- or a ;
- ret ; valid characters
- invalid_ch: exx ; wieder alten Registersatz
- cp a ;
- ret ; mit ZERO Flag
-
- get_next_hl: ld a,(hl) ; erstes Zeichen
- or a ; wenn Zeilenende,
- ret z ; dann return
- cp ' ' ; wenn space,
- ret nz ; dann weitersuchen, bis Space gefunden
- inc hl ; dazu Pointer erh|hen
- jr get_next_hl ;
-
-
- UP2a: ld a,(de) ;
- cp '.' ;
- jr nz,fill_space ;
- inc de ;
- UP2: call test ;
- jr z,fill_space ;
- inc hl ;
- cp '*' ;
- jr nz,not_all ;
- ld (hl),'?' ;
- jr next_x ;
- not_all: ld (hl),a ;
- inc de ;
- next_x: djnz UP2 ;
- cp '*' ;
- ret nz ;
- inc de ;
- ret ;
- fill_space: inc hl ; Rest des Teiles mit space f}llen
- ld (hl),' ' ;
- djnz fill_space ;
- ret ;
-
- ;**************************************************************** *
-
- dseg ;
- char_tabelle: db '<>.,;:=[\]_%|()/',7fh
- cseg ;
-
- ;**************************************************************** *
-
- _xfcb: xor a ; jetzt Default-Drive
- ld (de),a ; in FCB-Drivefeld
- call get_next_hl ; erhasche erstes Zeichen des Namens
- ex de,hl ;
- jr z,fill_fcb ; war garnichts
- inc de ;
- ld a,(de) ; zweites Zeichen
- dec de ;
- cp ':' ; Laufwerksangabe?
- jr nz,fill_fcb ; nein
- ld a,(de) ; ist eine Laufwerkangabe
- and not ' ' ; toupper
- sub 'A' ;
- cp 'P' ;
- jr nc,fill_fcb ; falsche Laufwerkangabe wird ignoriert
- inc de ; zeigt jetzt auf ':'
- inc de ;
- inc a ;
- ld (hl),a ;
-
- fill_fcb: ld b,8 ; 8 Characters Filename
- call UP2 ; generieren
- ld b,3 ; 3 Characters Fileextension
- jp UP2a ; generieren (aber '.' anders behandeln)
- end ;