home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / EXTRA-ST / CPM-80-E / CPM-0.2 / CPM-0 / cpm-0.2 / z80-sources / mylib / setupfcb.mac < prev    next >
Encoding:
Text File  |  1994-06-06  |  2.3 KB  |  93 lines

  1. ;****************************************************************    *
  2. ;*                                *    *
  3. ;*        Unterprogramm f}r OPEN, CREATE und KILL        *    *
  4. ;*                                *    *
  5. ;****************************************************************    *
  6.  
  7.         .z80            ;
  8.         entry _xfcb        ;
  9.  
  10. test:        ld a,(de)        ; pr}fe Zeichen auf G}ltigkeit f}r Dateinamen
  11.         cp ' '            ; space?
  12.         ret z            ; zero auch bei space
  13.         exx            ;
  14.         jr c,invalid_ch        ;
  15.         ld b,17            ; Anzahl der ung}ltigen Zeichen
  16.         ld hl,char_tabelle    ;
  17. check_char:    cp (hl)            ;
  18.         jr z,invalid_ch        ;
  19.         inc hl            ;
  20.         djnz check_char        ;
  21.         exx            ;
  22.         or a            ;
  23.         ret            ; valid characters
  24. invalid_ch:    exx            ; wieder alten Registersatz
  25.         cp a            ;
  26.         ret            ; mit ZERO Flag
  27.  
  28. get_next_hl:    ld a,(hl)        ; erstes Zeichen
  29.         or a            ; wenn Zeilenende,
  30.         ret z            ; dann return
  31.         cp ' '            ; wenn space,
  32.         ret nz            ; dann weitersuchen, bis Space gefunden
  33.         inc hl            ; dazu Pointer erh|hen
  34.         jr get_next_hl        ;
  35.  
  36.  
  37. UP2a:        ld a,(de)        ;
  38.         cp '.'            ;
  39.         jr nz,fill_space    ;
  40.         inc de            ;
  41. UP2:        call test        ;
  42.         jr z,fill_space        ;
  43.         inc hl            ;
  44.         cp '*'            ;
  45.         jr nz,not_all        ;
  46.         ld (hl),'?'        ;
  47.         jr next_x        ;
  48. not_all:    ld (hl),a        ;
  49.         inc de            ;
  50. next_x:        djnz UP2        ;
  51.         cp '*'            ;
  52.         ret nz            ;
  53.         inc de            ;
  54.         ret            ;
  55. fill_space:    inc hl            ; Rest des Teiles mit space f}llen
  56.         ld (hl),' '        ;
  57.         djnz fill_space        ;
  58.         ret            ;
  59.  
  60. ;****************************************************************    *
  61.  
  62.         dseg            ;
  63. char_tabelle:    db '<>.,;:=[\]_%|()/',7fh
  64.         cseg            ;
  65.  
  66. ;****************************************************************    *
  67.  
  68. _xfcb:        xor a            ; jetzt Default-Drive
  69.         ld (de),a        ; in FCB-Drivefeld
  70.         call get_next_hl    ; erhasche erstes Zeichen des Namens
  71.         ex de,hl        ;
  72.         jr z,fill_fcb        ; war garnichts
  73.         inc de            ;
  74.         ld a,(de)        ; zweites Zeichen
  75.         dec de            ;
  76.         cp ':'            ; Laufwerksangabe?
  77.         jr nz,fill_fcb        ; nein
  78.         ld a,(de)        ; ist eine Laufwerkangabe
  79.         and not ' '        ; toupper
  80.         sub 'A'            ;
  81.         cp 'P'            ;
  82.         jr nc,fill_fcb        ; falsche Laufwerkangabe wird ignoriert
  83.         inc de            ; zeigt jetzt auf ':'
  84.         inc de            ;
  85.         inc a            ;
  86.         ld (hl),a        ;
  87.  
  88. fill_fcb:    ld b,8            ; 8 Characters Filename
  89.         call UP2        ; generieren
  90.         ld b,3            ; 3 Characters Fileextension
  91.         jp UP2a            ; generieren (aber '.' anders behandeln)
  92.         end            ;
  93.