00000000: 50 52 4F 47 52 41 4D 20 50 43 36 34 4C 43 42 4D |PROGRAM PC64LCBM|
00000010: 44 28 4C 49 53 54 20 43 42 4D 20 44 49 52 45 43 |D(LIST CBM DIREC|
00000020: 54 4F 52 59 5B 43 36 34 20 56 45 52 53 49 4F 4E |TORY[C64 VERSION|
00000030: 5D 2C 31 32 2F 31 39 2F 38 32 29 3B 0D 0D 43 4F |],12/19/82);..CO|
00000040: 4E 53 54 20 53 54 41 54 55 53 41 44 44 52 45 53 |NST STATUSADDRES|
00000050: 53 3D 24 30 30 39 30 3B 0D 20 20 20 20 20 20 44 |S=$0090;. D|
00000060: 49 53 4B 55 4E 49 54 3D 38 3B 0D 0D 56 41 52 20 |ISKUNIT=8;..VAR |
00000070: 44 4F 4E 45 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 20 |DONE: BOOLEAN;. |
00000080: 20 20 20 43 48 3A 20 43 48 41 52 3B 0D 20 20 20 | CH: CHAR;. |
00000090: 20 43 4F 55 4E 54 3A 20 49 4E 54 45 47 45 52 3B | COUNT: INTEGER;|
000000A0: 0D 20 20 20 20 4E 41 4D 45 3A 20 53 54 52 49 4E |. NAME: STRIN|
000000B0: 47 3B 0D 20 20 20 20 44 49 52 3A 20 54 45 58 54 |G;. DIR: TEXT|
000000C0: 3B 0D 0D 46 55 4E 43 54 49 4F 4E 20 47 45 54 4E |;..FUNCTION GETN|
000000D0: 55 4D 42 45 52 3A 20 49 4E 54 45 47 45 52 3B 0D |UMBER: INTEGER;.|
000000E0: 20 20 56 41 52 20 43 48 2C 20 4C 4F 3A 20 43 48 | VAR CH, LO: CH|
000000F0: 41 52 3B 0D 20 20 20 20 20 20 49 3A 20 49 4E 54 |AR;. I: INT|
00000100: 45 47 45 52 3B 0D 20 20 42 45 47 49 4E 0D 20 20 |EGER;. BEGIN. |
00000110: 20 20 49 3A 3D 30 3B 0D 20 20 20 20 44 4F 4E 45 | I:=0;. DONE|
00000120: 3A 3D 46 41 4C 53 45 3B 0D 20 20 20 20 52 45 50 |:=FALSE;. REP|
00000130: 45 41 54 0D 20 20 20 20 20 20 49 3A 3D 49 2B 31 |EAT. I:=I+1|
00000140: 3B 0D 20 20 20 20 20 20 52 45 41 44 28 44 49 52 |;. READ(DIR|
00000150: 2C 43 48 29 3B 0D 20 20 20 20 20 20 49 46 20 4D |,CH);. IF M|
00000160: 45 4D 5B 53 54 41 54 55 53 41 44 44 52 45 53 53 |EM[STATUSADDRESS|
00000170: 5D 3C 3E 24 30 30 0D 20 20 20 20 20 20 20 20 20 |]<>$00. |
00000180: 20 54 48 45 4E 20 44 4F 4E 45 3A 3D 54 52 55 45 | THEN DONE:=TRUE|
00000190: 3B 0D 20 20 20 20 20 20 49 46 20 49 3D 33 0D 20 |;. IF I=3. |
000001A0: 20 20 20 20 20 20 20 20 20 54 48 45 4E 20 4C 4F | THEN LO|
000001B0: 3A 3D 43 48 3B 0D 20 20 20 20 20 20 49 46 20 49 |:=CH;. IF I|
000001C0: 3D 34 0D 20 20 20 20 20 20 20 20 20 20 54 48 45 |=4. THE|
000001D0: 4E 20 47 45 54 4E 55 4D 42 45 52 3A 3D 4F 52 44 |N GETNUMBER:=ORD|
000001E0: 28 43 48 29 2A 32 35 36 2B 4F 52 44 28 4C 4F 29 |(CH)*256+ORD(LO)|
000001F0: 0D 20 20 20 20 55 4E 54 49 4C 20 28 49 3D 34 29 |. UNTIL (I=4)|
00000200: 20 4F 52 20 44 4F 4E 45 0D 20 20 45 4E 44 3B 0D | OR DONE. END;.|
00000210: 0D 42 45 47 49 4E 0D 20 20 52 45 53 45 54 28 44 |.BEGIN. RESET(D|
00000220: 49 52 2C 44 49 53 4B 55 4E 49 54 2C 39 36 2C 27 |IR,DISKUNIT,96,'|
00000230: 24 30 27 29 3B 0D 20 20 52 45 41 44 28 44 49 52 |$0');. READ(DIR|
00000240: 2C 43 48 2C 43 48 29 3B 0D 20 20 52 45 50 45 41 |,CH,CH);. REPEA|
00000250: 54 0D 20 20 20 20 44 4F 4E 45 3A 3D 46 41 4C 53 |T. DONE:=FALS|
00000260: 45 3B 0D 20 20 20 20 43 4F 55 4E 54 3A 3D 47 45 |E;. COUNT:=GE|
00000270: 54 4E 55 4D 42 45 52 3B 0D 20 20 20 20 49 46 20 |TNUMBER;. IF |
00000280: 4E 4F 54 20 44 4F 4E 45 0D 20 20 20 20 20 20 20 |NOT DONE. |
00000290: 20 54 48 45 4E 20 42 45 47 49 4E 0D 20 20 20 20 | THEN BEGIN. |
000002A0: 20 20 20 20 20 20 20 20 20 20 20 4E 41 4D 45 3A | NAME:|
000002B0: 3D 27 27 3B 0D 20 20 20 20 20 20 20 20 20 20 20 |='';. |
000002C0: 20 20 20 20 52 45 41 44 28 44 49 52 2C 43 48 29 | READ(DIR,CH)|
000002D0: 3B 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |;. |
000002E0: 20 52 45 50 45 41 54 0D 20 20 20 20 20 20 20 20 | REPEAT. |
000002F0: 20 20 20 20 20 20 20 20 20 49 46 20 4D 45 4D 5B | IF MEM[|
00000300: 53 54 41 54 55 53 41 44 44 52 45 53 53 5D 3C 3E |STATUSADDRESS]<>|
00000310: 24 30 30 0D 20 20 20 20 20 20 20 20 20 20 20 20 |$00. |
00000320: 20 20 20 20 20 20 20 20 20 54 48 45 4E 20 44 4F | THEN DO|
00000330: 4E 45 3A 3D 54 52 55 45 3B 0D 20 20 20 20 20 20 |NE:=TRUE;. |
00000340: 20 20 20 20 20 20 20 20 20 20 20 4E 41 4D 45 3A | NAME:|
00000350: 3D 43 4F 4E 43 41 54 28 4E 41 4D 45 2C 43 48 29 |=CONCAT(NAME,CH)|
00000360: 3B 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |;. |
00000370: 20 20 20 52 45 41 44 28 44 49 52 2C 43 48 29 0D | READ(DIR,CH).|
00000380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 | U|
00000390: 4E 54 49 4C 20 43 48 3D 24 30 30 3B 0D 20 20 20 |NTIL CH=$00;. |
000003A0: 20 20 20 20 20 20 20 20 20 20 20 20 57 52 49 54 | WRIT|
000003B0: 45 4C 4E 28 27 20 27 2C 43 4F 55 4E 54 2C 27 20 |ELN(' ',COUNT,' |
000003C0: 27 2C 4E 41 4D 45 29 0D 20 20 20 20 20 20 20 20 |',NAME). |
000003D0: 20 20 20 20 20 45 4E 44 0D 20 20 55 4E 54 49 4C | END. UNTIL|
000003E0: 20 44 4F 4E 45 3B 0D 20 20 57 52 49 54 45 4C 4E | DONE;. WRITELN|
000003F0: 0D 45 4E 44 2E 0D 03 FF 00 00 43 4F 4D 37 |.END......COM7 |
PROGRAM PC64LCBMD(LIST CBM DIRECTORY[C64
VERSION],12/19/82);..CONST STATUSADDRES
S=$0090;. DISKUNIT=8;..VAR DONE: BO
OLEAN;. CH: CHAR;. COUNT: INTEGER;
. NAME: STRING;. DIR: TEXT;..FUNCT
ION GETNUMBER: INTEGER;. VAR CH, LO: CH
AR;. I: INTEGER;. BEGIN. I:=0;.
DONE:=FALSE;. REPEAT. I:=I+1
;. READ(DIR,CH);. IF MEM[STATU
SADDRESS]<>$00. THEN DONE:=TRUE
;. IF I=3. THEN LO:=CH;.
IF I=4. THEN GETNUMBER:=ORD
(CH)*256+ORD(LO). UNTIL (I=4) OR DONE
. END;..BEGIN. RESET(DIR,DISKUNIT,96,'
$0');. READ(DIR,CH,CH);. REPEAT. DO
NE:=FALSE;. COUNT:=GETNUMBER;. IF
NOT DONE. THEN BEGIN.
NAME:='';. READ(DIR,CH)
;. REPEAT.
IF MEM[STATUSADDRESS]<>$00.
THEN DONE:=TRUE;.
NAME:=CONCAT(NAME,CH);.
READ(DIR,CH). UNTIL CH=
$00;. WRITELN(' ',COUNT,'
',NAME). END. UNTIL DONE;.
WRITELN.END......COM7
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL