home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* DIRECT.PAS *)
- (* Einlesen des Directories unter Z80 Turbo Pascal *)
- (* (c) 1988 by J.Tucht und TOOLBOX *)
- (* ------------------------------------------------------ *)
-
- TYPE
- CPMDir = ARRAY [1..100,1..11] OF CHAR;
- (* muss unbedingt gross genug sein ! *)
- VAR
- f : FILE;
- x : INTEGER;
- Dir : CPMDir;
- WildCards: BOOLEAN ABSOLUTE $3F3;
- (* nur für Turbo Pascal 3.0 *)
- FUNCTION LiesDir(VAR f; VAR Dir: CPMDir): INTEGER;
- VAR DMA: ARRAY [0..127] OF BYTE;
- BEGIN
- Inline(
- $11/DMA/ { LD DE,DMA }
- $0E/$1A/ { LD C,26 }
- $CD/$05/$00 { CALL 5 }
- $ED/$5B/Dir/ { LD DE,(Dir) }
- $0E/$11/ { LD C,17 }
- $21/$00/$00/ { LD HL,0 }
- $E5/ { PUSH HL }
- $18/$13/ { JR DirLP. }
- $23/ { DirLP INC HL }
- $E5/ { PUSH HL }
- $0F/ { RRCA }
- $0F/ { RRCA }
- $0F/ { RRCA }
- $06/$00/ { LD B,0 }
- $4F/ { LD C,A }
- $21/DMA+1/ { LD HL,DMA+1 }
- $09/ { ADD HL,BC }
- $01/$0B/$00/ { LD BC,11 }
- $ED/$B0/ { LDIR }
- $0E/$12/ { LD C,18 }
- $D5/ { DirLP. PUSH DE }
- $2A/F/ { LD HL,(F) }
- $11/$0C/$00/ { LD DE,12 }
- $19/ { ADD HL,DE }
- $EB/ { EX DE,HL }
- $CD/$05/$00/ { CALL 5 }
- $D1/ { POP DE }
- $E1/ { POP HL }
- $B7/ { OR A }
- $F8/ { RET M }
- $18/$DB) { JR DirLP }
- END;
-
- BEGIN
- WildCards := TRUE;
- Assign (f,'*.*');
- FOR x:=1 TO LiesDir(f, Dir) DO Write(x:4,':',Dir[x]);
- Write('Waehle eine Nummer --> '); ReadLn(x);
- (* einen Dateinamen in den CP/M-File Control Block *)
- (* eintragen und sehen, ob die Datei gefunden wird *)
- Move(Dir[x], Mem[Addr(f)+13],11);
- Reset(f)
- END.
- (* ------------------------------------------------------ *)
- (* Ende von DIRECT.PAS *)