; ************************** AMUS Program Label ****************************** ; Filename: EXT.M68 Date: 01/04/90 ; Category: UTIL Hash Code: 663-713-773-475 Version: 1.0(100) ; Initials: ULTR/AM Name: DAVID PALLMANN ; Company: ULTRASOFT CORPORATION Telephone #: 5163484848 ; Related Files: WLDSCN.LIB (required for assembly/linkage) ; Min. Op. Sys.: AMOSL 1.3B Expertise Level: BEG ; Special: Use 2.0 assembler. To link: .LNKLIT EXT,WLDSCN/L ; Description: Shows extensions in an account. Defaults to your own account, ; or you can specify an account on the command line. ; **************************************************************************** ;**************************************************************************** ;* * ;* EXT * ;* Show file extensions in current account or specified location * ;* * ;**************************************************************************** ;Copyright (C) 1990 UltraSoft Corporation. All Rights Reserved. ; ;Written by: David Pallmann ; ;Edit History: ;1.0(100) 04-Jan-90 created. VMAJOR =1 VMINOR =0 VSUB =0 VEDIT =100. VWHO =0 AUTOEXTERN SEARCH SYS SEARCH SYSSYM ;assembly parameters MAXEXT =5000. ; max extensions we can store ;variables .OFINI .OFDEF EXTCNT, 2 ; extension count .OFDEF EXTLST, 2*MAXEXT ; extension list .OFDEF BUFFER, 8. ; RAD50 conversion buffer .OFSIZ MEMSIZ ;wildcard scanner macros DEFINE WINIT IF NDF,W.INIT,EXTERN W.INIT CALL W.INIT ENDM DEFINE WSPEC EXT IF NDF,W.SPEC,EXTERN W.SPEC CALL W.SPEC IF B,EXT,ASCII /???/ IF NB,EXT,ASCII /'EXT/ BYTE 0 ENDM DEFINE WSCAN IF NDF,W.SCAN,EXTERN W.SCAN CALL W.SCAN ENDM DEFINE WFULL IF NDF,W.FULL,EXTERN W.FULL CALL W.FULL ENDM DEFINE WLIST ADDR IF NDF,W.LIST,EXTERN W.LIST IF NB,ADDR PUSH A0 LEA A0,ADDR ENDC CALL W.LIST IF NB,ADDR POP A0 ENDC ENDM ;*********** ;* START * ;*********** START: PHDR -1,0,PH$REE!PH$REU ; program header GETIMP MEMSIZ,A5 ; allocate variable memory WINIT ; initialize wildcard scanner LEA A3,EXTLST(A5) ; CLRW EXTCNT(A5) ; CMDLIN: BYP ; WSPEC ; JNE EXIT ; LOOP: CTRLC EXIT ; WSCAN ; JNE SORT ; MOVW D.EXT(A4),D5 ; CLR D0 ; MOVW EXTCNT(A5),D0 ; BEQ ADD ; LEA A0,EXTLST(A5) ; 10$: CMPW D5,(A0)+ ; JEQ LOOP ; SOB D0,10$ ; ADD: MOVW D5,(A3)+ ; INCW EXTCNT(A5) ; JMP LOOP ; ;********** ;* SORT * ;********** ;Sort extensions alphabetically SORT: TSTW EXTCNT(A5) ; JEQ NONE ; SO.HOM: MOV #1,D0 ; LEA A0,EXTLST(A5) ; SO.CHK: CMPW D0,EXTCNT(A5) ; BHIS SHOW ; CMMW @A0,2(A0) ; BLOS SO.NXT ; SO.SWP: MOVW @A0,D6 ; MOVW 2(A0),@A0 ; MOVW D6,2(A0) ; CMPW D0,#1 ; BEQ SO.CHK ; DECW D0 ; SUB #2,A0 ; BR SO.CHK ; SO.NXT: ADD #2,A0 ; INCW D0 ; BR SO.CHK ; ;*********** ;* SHOW * ;*********** SHOW: CLR D0 ; MOVW EXTCNT(A5),D0 ; BEQ NONE ; TYPECR Extensions in this account: CRLF ; LEA A1,EXTLST(A5) ; 10$: CTRLC 20$ ; LEA A2,BUFFER(A5) ; UNPACK ; TTYL BUFFER(A5) ; TAB ; SOB D0,10$ ; CRLF ; 20$: CRLF ; BR EXIT ; NONE: TYPECR %Directory is empty ; CRLF ; EXIT: EXIT ; END .