AppleSoft: Routine to Read a DOS Catalog

The following routine will read a DOS Catalog.
100 TEXT : NORMAL : HOME
102 INP$ = ""
104 VS = ( PEEK (106) * 256) + PEEK (105)
106 POKE (VS + 2),240: POKE (VS + 3),14: POKE (VS + 4),150
108 FOR A = 768 TO 793: REM RWTS IOB; A$300, L$20
110 READ D: POKE A,D: NEXT
112 DATA 169,3,160,9,32,217,3,96,0,1,96,1,0,17,15,: 251,183,0,150,0,0,1,0,254,96,1
114 BL$ = ""
116 FOR I = 1 TO 40
118 BL$ = BL$ + CHR$ (160): NEXT I
120 DIM N$(105),S$(105),T$(105),L$(105)
122 IOB = 777:PL = 15
124 RB = - 27136: REM READ BUFFER
126 CS = IOB + 1:CD = IOB + 2:TRK = IOB + 4:SEC = IOB + 5
128 F1 = RB + 11:F7 = RB + 221
130 S = PEEK ( - 18455) / 16:D = PEEK ( - 18454)
132 POKE CS,(S * 16): POKE CD,D
134 POKE TRK,17
136 F = 496:C = 0
138 FOR X = 15 TO 1 STEP - 1
140 POKE SEC,X: CALL 768
142 ZZ = - 34
144 FOR Y = F1 TO F7 STEP 35
146 ZZ = ZZ + 35
148 Z = PEEK (Y + 33): IF (Z = 0) GOTO 178
150 C = C + 1
152 IF ( PEEK (Y) = 255) THEN N$(C) = "1": GOTO 176
154 F = F - Z
156 S$(C) = STR$ (Z)
158 IF ( LEN (S$(C)) = 1) THEN S$(C) = "00" + S$(C)
160 IF ( LEN (S$(C)) = 2) THEN S$(C) = "0" + S$(C)
162 Z = PEEK (Y + 2):L$(C) = " ": IF (Z > 16) THEN L$(C) = "*":Z = Z - 128
164 IF (Z = 0) THEN T$(C) = "T"
166 IF (Z = 1) THEN T$(C) = "I"
168 IF (Z = 2) THEN T$(C) = "A"
170 IF (Z = 4) THEN T$(C) = "B"
172 IF (Z = 16) THEN T$(C) = "R"
174 N$(C) = MID$ (INP$,ZZ,30)
176 NEXT Y: NEXT X
178 F$ = STR$ (F): IF ( LEN (F$) = 1) THEN F$ = "00" + F$
180 IF ( LEN (F$) = 2) THEN F$ = "0" + F$
182 FOR I = 1 TO C
184 C$ = STR$ (I)
186 IF ( LEN (C$) < 3) THEN C$ = " " + C$: GOTO 186
188 IF (N$(J * PL + I) = "1") THEN PRINT C$;" ";: INVERSE: PRINT "DELETED FILE";: NORMAL : PRINT
190 IF (N$(J * PL + I) <> "1") THEN PRINT C$;" ";L$(J * PL + I);T$(J * PL + I);" ";: S$(J * PL + I);" ";
N$(J * PL + I)
192 NEXT
Published Date: Feb 19, 2012