IMD 1.16: 28/05/2007 17:25:27 -FOG/UTL055         -FOG/UTL055/UTL#055CRC+/UTL#055DOC*EX14 COMEX14 DOC/EX14 SUB! EX14 TST MBEAUT BAS, MBREM BAS MBXREF BAS2SD-91 COMSD-91 DOCSD-91 INFSD-91 UPD8 !"VLIST COM VLIST DOC #XTYPE COMF$%&'(XTYPE DOC)VLIST.COM ver 1.1 10/16/80!9"J1J*""VLIST ver 1.1 CTL-S pauses, CTL-C aborts Type ^H,^J,^K,^L to vary speed:] ¬++NO FILE NAME SPECIFIED++;S:++FILE NOT FOUND++;DONE;!]!e  --> FILE: XXXXXXXX.XXX ~# !\- T""LIST ver 1.1 CTL-S L@es*P*R}|ڭ!"R*P{zҟ*N-™*R"Rk*R"P!"R*N*P}>*R#"Rɯ292M!@"P"R-<  NO DISKIN FILE$!g~  M8+~Oq+~Cq++CAN'T LIST A .COM FILE++ìJq+~Bq+~Oq++CAN'T LIST AN .OBJ FILE++ìWʬͺĆq>ö §>ö ±>ö >2 > > ~#~> > :    _  ++ABORTED++ *J2h2|:ʒ!\ :\2!\ \ú!\ \!\ \<7=Ɓo& ] 2h2|2~# x!9"$1>2ͤ*?*}_|W!x< ~#/bkxp :/<2/Z~#2.:.2.lA+";#:o&6 !S0> 2*h:!"2>2!"4*2#"2:  G*4H'6 #6 #"4òe!='2|\  VLIST.COM ver 1.1 10/16/80!9"J1J*""VLIST ver 1.1 CTL-S pauses, CTL-C aborts Type ^H,^J,^K,^L to vary spe<%!]&6.#e&6$z*4!"4\%*46"6}|q2&2'2(28!"2*;"9"= „2u| > 2O:&yʯ;A^$2) O:8yuNu͒:; ?|$%.ʘ#ʓ<ʪ>rifie b CR check File ma b place o severa disk withou war boo whe th disk ar change a i require b PIP O deletio o overwrite yo ar give secon chanc fo decisio o th action. ù>ù>ù>ù> > 2)u!A0> 2*h> ~!)w¹O:(yʹ:&yʹ#!):8=28ʏ jw:8ʉ> > ~> ~>ù>!(£w>ù>2)!&u2&2'ù>2)!'u2'2&ù*6}|ʉw+*###>E#>X#> Jerry Boyce LOGIC Charlotte, NC Oͤ*$:6+6} %. 6+6X+6E+:w+:w+6*'ͤͤͤͤ*,ͪ fͤ ͤͤ zͤ|`ڣ{G @;:?$.#<>G@G$^|1Y:Y12+!U _^#V{   w+#~!A:+P_^#V{P w#&*2#"2!)6!86kb"0"9 :(:&:8<28", ʜ os#r#:*b ʜ ‰o>  ~ µ> #_ê!ͤ@ͤ*2*0~# 6 ~#_!u >>>Ex Aborted<<< $ (Ex Active)$ (Ex Completed) >$ßâåèBDOS>   "IH! !B"$$HB!$BD$$$$H"D $$I """~+"21*|   |{0_~#'_x{ w#0SUB error line # $ (Ex Already Present)$ Text buffer empty$ Input/EX Buffer Overlap$ No parameter or default parameter$ Parameter$ File filename.typ$ not there$ Control character$ Too many arguments - $EX 1.4 11-22-82$ $ppppppppppppppppppppppppppppppppI"""~+"21*|g."*" *! 1*~*"*"#^#V!_:O*AâÐu!9"!ͥ͢ʽ½ͥ*#w">*:2́a OC[[ 2> O:y½ͨÚ*"222Úͥ͢ʽ 7ͨOu u!Kw!Ww2*"x: :y2è*~+"*#"**{z­og"!m*å1!J!m*! (~#:!0:A[a{2:~$#Oͨ!A!  w refreshes the storage in the 6 bytes below the BDOS+1 address during any warmboot request. The enhancements added with EX 1.2 are: ^: EX runtime re-execution function ^? EX runtime wait for carriage return `Xsub Already Present' logic Input/EX buffer overlap detection EX runtime recursion prevention (Ex Already Present) EX runtime prompt mode character logic The enhancements added with EX 1.1 are: ;; EX only comment support ^. Print suppression to EX 1.4 - 11/20/82 Thanks to Joe Cutler, Stan Hanson, and Ron Fowler for EX.* and the information used to create this version. This file and the source for EX14 are based upon the previous EX*.* files. EX 1.4 is a maintenance upggle ^<..^> Immediate print function ^# EX message suppression toggle ^| Carriage return/line feed function ^$ Default parameters' support Logic to prevent ZCPR re-entrance to EX.COM (EX.COM is not reentrant) --Larry Sdate to EX 1.2 and EX 1.3 (never released). Problem: BASCOM would not execute under EX. Reason: BASCOM is doing system integrity checks using the BDOS+1 address. EX was not preserving the required information so that BASCOM would execute. teeger [70315,1120] on CompuServe [note: The changes from file EXFIX.DOC have been incorporated into EX12.*] EX is a nifty and fast way of executing .SUB files, (uses ram as the SUB file buffer rather than spreading it out on dis Resolution: See next problem resolution. Problem: Unpredictable results when executing MBASIC under EX. Reason: MBASIC (and others) were not subtracting 6 from the BDOS+1 address when determining available memory. Resolution: EX nok). EX also allows batch entry of a series of commands which it stores in memory for subsequent continuous execution. EX relocates itself and its buffer to high memory just below CCP and adjusts the CP/M BDOS entry to protect itself. -  -Stan Hanson 05/24/82 EX replaces the functions of both SUBMIT.COM and XSUB.COM from Digital Research, Inc. --Larry Steeger 08/06/82 The files used to assemble EX14.ASM using EX14.SUB are: ED.COM EX14.ASM se EX to load the into memory and perform substitution the same as SUBMIT, with the addition of the `^$' support for missing parameters. After all parameters have been substituted the text from the file is exeEX14.SUB MAC.COM RELS.UTL (or REL.UTL see note in EX14.SUB) SID.COM SUBMIT.COM and XSUB.COM (or a previous version of EX.COM may be used) [note: REL.UTL is available on CP/MUG Volume #38] [note: RELS.UTL is availcuted as if was entered from the console. EX14.COM may be terminated during execution by entering control-C from the console. EX14.COM submit file conventions are: [note: unless otherwise stated, the `<.......>' sequences able on CP/MIG XA1 ACCESS database] The files used to test EX14.COM are: EX14.COM EX14.TST (must be renamed to .SUB before executing test) XSUB.COM The files used to execute EX14.COM are: EX14.COM SUB.COM ( are used only to indicate character strings that must be replaced with the values described.] ^ generates the corresponding control character. Lowercase letters a thru z are converused to generate simple *.SUB files) [note: Any good CP/M editor may be used to create *.SUB files] (cr is carriage return) EX14.COM may be invoked two ways: 1. EX14 cr This form will cause EX to prompt with a line number anted to uppercase. $<1 thru 9> generates parameter <1 thru 9> substitution the same as SUBMIT, unless `^$' is being used as described below. ^$ will generate a list of parameters that will be used ind `:' for each command line to be executed. A carriage return entered by itself terminates the prompting and starts execution of the command lines that have been entered. 2. EX14 cr This form will cau the $<1 thru 9> parameter substitution if the user does not provide any parameters or only some of the parameters on the EX command line. ;; generates an EX only comment (the ;; and the remainder of the c  urrent line are not moved to the EX command buffer.). | generates a Carriage Return. ^| generates a Carriage Return and Line Feed. |,cr,lf,1AH(EOF) will eliminate all characters from the last | thru this sequence. ^. toggle EX14.SUB and the files mentioned above. --Larry Steeger 11/20/82 BIN or .OBJ) was generated from EX14.ASM usingaret or up-arrow). $| generates the | (broken vertical bar). EX14.COM(.BIN or .OBJ) was generated from EX14.ASM usings print suppression for characters from SUBMIT file. (Example: DIR ^.*.COM^. will execute DIR *.COM but only DIR will be echoed to the console.) ^< forces immediate display of the characters following it until ^> is encountered.; ; EX 1.4 INSTALLATION .SUB FILE 11-20-82 ; ; 1. ERASE ANY FILES FROM PREVIOUS .SUB EXECUTIONS ; ERA EX14?.HEX Y ERA EX14?.SYM Y ERA EX14?.PRN Y ; ; 2. USE CPM 2.2 XSUB (not required if using previous version of EX) ; XSUB ; ; 3. CREATE  ^ control support, $<1 thru 9> parameter substitution, and $ escape support continues during this display mode. (Example: ^<^[ETest EX 1.4^|^> will generate the sequence to clear the screen on the H/Z19 terminal aEX14.LIB FOR ASSEMBLY OF ORG 0 RELOCATED CODE SEGMENT ; ED EX14.LIB #A #K IBASE EQU FALSE ;SUPPRESS EX14 INITIATOR CODE (ENABLE RELOCATED CODE) IREL EQU 0 ;SET RELOCATED CODE SEGMENT TO ORG 0 E ; ; 4. ASSEMBLE ONLY ORG 0 RELOCATED CODE SEGMENT ; nd display `Test EX 1.4' at the upper-lefthand corner of the screen and the cursor will be on the next line.) ^: causes EX to re-execute the .SUB file from the beginning. ^? causes EX to wait for a carriage return response from th MAC EX14 ; ; 5. RENAME STEP 4 FILES ; REN EX140.HEX=EX14.HEX REN EX140.SYM=EX14.SYM REN EX140.PRN=EX14.PRN ; ; 6. CHANGE EX14.LIB FOR ASSEMBLY OF ORG 100H RELOCATED CODE SEGMENT ; ED EX14.LIB #A #K IBASE EQU FALSE ;SUPPRESS EX14 INITIATOR CODe console. Control-C will terminate EX at this point also. $$ generates the $ (dollar-sign). $^ generates the ^ (caret or up-arrow). $| generates the | (broken vertical bar). EX14.COM(.BIN or .OBJ) was generated from EX14.ASM usingE (ENABLE RELOCATED CODE) IREL EQU 0100H ;SET RELOCATED CODE SEGMENT TO ORG 0+100H E ; ; 7. ASSEMBLE ONLY ORG 100H RELOCATED CODE SEGMENT ; MAC EX14 $$PZ SZ ; ; 8. RENAME STEP 7 FILE ; REN EX141.HEX=EX14.HEX ; ; 9. CHANGE EX14.LIB FOR ASSEMBLY   OF EX INITIATOR CODE ONLY ; ED EX14.LIB #A #K IBASE EQU TRUE ;ENABLE EX14 INITIATOR CODE GENERATION (SUPPRESS RELOCATED CODE) IREL EQU 0 ;RESET RELOCATED CODE SEGMENT TO ORG 0 E ; ; 10. ASSEMBLE EX INITIATOR CODE ONLY ; MAC EX14 ; ; 11. USE SI; ; A. SID is invoked and the .SYM files for the ORG 0 Relocated Code ; Segment and the Initiator Code Segment are loaded. ; ; B. The DW at symbol RELOCL is updated with the value of DRVERL ; from the ORG 0 Relocated Code Segment. ; ; C. D AND RELS.UTL TO CREATE EX14.COM ; ; [note: If only REL.UTL is available, comment out the lines ; starting with IEX14.COM below and change the line ; SID RELS.UTL to SID REL.UTL and a SAVE 10 EX14.COM ; must be added at the end of thiMemory for the two copies of the Relocated Code Segment ; (ORG 0 and ORG 100H) and the relocation table bit map is zeroed. ; ; D. The ORG 0 Relocated Code Segment is loaded starting at ; location BEGREL. ; ; E. The ORG 100H Relocated Code Ss file.] ; ; EX14.HEX contains EX Initiator Code ; EX14.SYM contains symbols for SID for EX Initiator Code ; ; EX140.HEX contains EX ORG 0 Relocated Code Segment ; EX140.SYM contains symbols for SID for EX ORG 0 Relocated Code ; ;egment is loaded after the ; segment loaded in step C plus the length of the relocation ; table bit map. ; ; F. RELS.UTL routine SETADRS sets the starting addresses of ; the two Relocated Code Segments for creation of the relocation ;  EX141.HEX contains EX ORG 100H Relocated Code Segment ; ; BEGREL is the symbol for the start of the Relocated Code ; Segment in EX14.COM ; ; DRVERL is the symbol for the length of the Relocated Code ; Segment ; ; DRVL8  table bit map. ; ; G. RELS.UTL routine SETLEN sets the length of the Relocated ; Code Segment and builds the relocation table bit map. ; ; *H. RELS.UTL routine SAVE saves the EX Initiator Code Segment, ; the ORG 0 Relocated Code Segm is the symbol for the length of the storage required ; for the relocation table bit map to be created by ; RELS.UTL ; ; RELOCL is the symbol for the DW in EX14.COM that will contain ; the length of the Relocated Code Segment ; ent, and the relocation table ; bit map created by RELS.UTL. ; ; * [note: not used if only REL.UTL is available] ; ; I. CP/M is returned to by G0. ; ; **J. SAVE 10 EX14.COM saves the EX Initiator Code Segment, ; the ORG 0 Relocated   Code Segment, and the relocation table ; bit map created by REL.UTL. ; ; ** [note: used ONLY if REL.UTL is used] ; SID RELS.UTL IEX14.HEX EX140.SYM R I* EX14.SYM R SW.RELOCL .DRVERL . F.BEGREL .BEGREL+.DRVERL+.DRVL8+.DRVERL 0 IEX140.HEX R.BEGREL IEX141.HEX R.BEGREL+.DRVERL+.DRVL8-100 C.SETADRS .BEGREL .BEGREL+.DRVERL+.DRVL8 C.SETLEN .DRVERL .BEGREL+.DRVERL IEX14.COM C.SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for execution. ; .SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for ex IEX14.COM C.SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for ex  ; ; EX14.TST - TEST EX FUNCTIONS ; ; ; TEST RECURSION PREVENTION ; EX14 ; ; TEST XSUB PRESENT ; XSUB ; ; TEST IMMEDIATE MODE ; ^ ; ; TEST $^? WAIT FOR CARRIAGE RETURN ; ^ ; ; SET EX MESSAGE SUPPRESS ; ^# ; ; TEST EX MESSAGE SUPPRESS BY WARMSTART ; ^C ; ; RESET EX MESSAGE SUPPRESS ; ^# ; ; TEST RESET EX MESSAGE SUPPRESS BY WARMSTART ; ^C ; ; TEST EX COMMENT ; DIR X.X ;; EX COMMENT ; ; TEST PRINT SUPPRESS ; DIR ^.XXX^. ; ; TEST PRINT SUPPRESS WITH EX COMMENT ; DIR ^.YYY ;; EX COMMENT^. ; ; TEST PRINT SUPPRESS WITH IMMEDIATE PRINT MODE ; DIR ^.ZZZ ^^. ; ; ; TEST CARRIAGE RETURN(3) ; ||| ; ; TEST $$ ; $^$|$$ ; ; TEST $^$$ DEFAULT PARAMETERS ; ^$ DF1 DF2 DF3 DF4 DF5 DF6 DF7 DF8 DF9 ; PARAMETERS=$9 $8 $7 $6 $5 $4 $3 $2 $1 ; ; TEST LOOP TEST ; ^: LT PARAMETERS ; ^$ DF1 DF2 DF3 DF4 DF5 DF6 DF7 DF8 DF9 ; PARAMETERS=$9 $8 $7 $6 $5 $4 $3 $2 $1 ; ; 1 'MBEAUT.BAS MBASIC BEAUTIFIER FOR MBASIC VER 5.XX CP/M 2 'DERIVED FROM "FORMAT.BAS" FROM GFRN DATA EXCH (GARDEN GROVE) 3 'DOWNLOADED 5/19/82 AND NAE CHANGED TO AVOID CONFUSING WITH 4 'DISK INIT PROGRAMS. T. MC CORMICK. 6 GOTO 10 7 SAVE "MBEAUT.BAS",A:STOP 10 ' 20 ' 30 ' This program will beautify MBASIC (,A Ascii saved) 40 ' programs. It will not disturb source statement lines which 50 ' contain a colon (":") after an " IF " statement since 60 ' MBASIC logic would   thereby be altered. Also the "IF" 70 ' must be properly delimited by spaces both in front, 80 ' and in back. (i.e. ) 90 ' 100 ' In addition to the above the prog. also 'SEGMENTS' 110 ' the input file by looking for' and may be changed to suit your system requirements. (The 390 ' array sizes given in the DIM statement are constants since 400 ' BASCOM doesn't like variables in its DIM's) 410 ' 420 ' Since this program creates new line numbers by adding 4 the following key words: 120 ' ON ... GOTO 130 ' GOTO 140 ' RETURN 150 ' END 160 ' When (if) it finds one of these, it inserts two remark 170 ' lines--one of which contains a series of dashes. 180 ' 190 ' T30 ' one to the last known line number, it is advisable to renumber 440 ' the original program. This is to ensure that enough room 450 ' exists to add the new numbers. 460 ' 470 ' cml 480 ' 490 ' -------------------------------------he prog. also indents 'FOR ... NEXT' loops as well 200 ' as all 'IF' statements. 210 ' 220 ' Please note that all of this expands the original 230 ' size so that the output file can become quite large if the 240 ' input file was heavily packed-------------------------------- 500 ' 510 R$=" '" 520 R1$=" ' --------------------------------------------------------------" 530 MAX = 100 540 MAX4 = 4*MAX 550 COLS=1 560 F=0 570 DIM M$(400),IN$(100) 572 FOR I=1 TO 25 : PRINT: NEXT I 595 INPUT  with multiple statements and 250 ' subroutines! 260 ' 270 ' THIS PROGRAM WILL NOT ALTER THE ORIGINAL FILE!! 280 ' 290 ' 300 ' N O T E S 310 ' 320 ' This program obtains its line number by checking 330 ' for the pre"SOURCE FILE NAME ? ",W$ 600 INPUT "OUTPUT FILE NAME ? ",W1$ 610 PRINT 620 OPEN "I",#1,W$ 630 OPEN "O",#2,W1$ 640 N=0 650 M=0 660 FOR K=0 TO MAX 670 IF EOF(1) < 0 THEN 720 680 LINE INPUT #1,L$ 690 IN$(K)=L$ 700 L$="" 710 NEXT K 720 IF EOF(1) <sence of a space between the line number and 340 ' the start of the statement. This space must be present! 350 ' 360 ' The variables MAX and MAX4 are set to the mamaximum 370 ' sizes of the input arrays. The numbers picked are arbitrary 380  0 THEN ENDS=1 ELSE ENDS=0 730 IF ENDS=1 THEN MAX=K-1 740 L$=IN$(M) 750 L=LEN(L$) 760 M$(N)="" 770 I=INSTR(L$," ") 780 N$=LEFT$(L$,I-1) 790 NUM=VAL(N$) 800 IF INSTR(L$,":")=0 THEN 820 ELSE 810 810 IF MID$(L$,I+1,3)="'" THEN 820 ELSE 840 820 M$(N)  =L$ 830 GOTO 1200 840 NUM=VAL(N$) 850 PRINT USING"* #####";NUM; 860 COLS=COLS+1 870 IF COLS > 10 THEN 880 ELSE 900 880 PRINT 890 COLS=1 900 M$(N)=N$ 910 Q=0 920 SP=0 930 FOR J = I TO L 940 IF MID$(L$,J,1)=CHR$(34) THEN Q=Q+1 950 IF Q=1 THEN 1100 IF MID$(M$(N),I1,5) = "GOTO " THEN 1450 1410 IF MID$(M$(N),I1,3)="ON " AND INSTR(I1,M$(N)," GOTO ") >0 THEN 1450 1420 IF MID$(M$(N),I1,6) = "RETURN" THEN 1450 1430 IF MID$(M$(N),I1,3) = "END" THEN 1450 1440 RETURN 1450 NUM=NUM+1 1460 N2$=STR$(NUM)50 960 IF Q=2 THEN Q=0 970 IF MID$(L$,J,1)=":" THEN 980 ELSE 1150 980 L1$="" 990 L1$=MID$(L$,I,J-I) 1000 IF INSTR(L1$," IF ") > 0 THEN 1150 ELSE 1010 1010 M$(N)=M$(N)+CHR$(13) 1020 GOSUB 1340 1030 N=N+1 1040 M$(N)="" 1050 NUM=NUM+1 1060 N$=STR$( 1470 N2$=MID$(N2$,2) 1480 NUM=NUM+1 1490 N3$=STR$(NUM) 1500 N3$=MID$(N3$,2) 1510 N=N+1 1520 M$(N)=N2$+R1$+CHR$(13) 1530 N=N+1 1540 M$(N)=N3$+R$+CHR$(13) 1550 RETURN 1560 I=INSTR(M$(N1)," ") 1570 IF MID$(M$(N1),I,1)=" " THEN 1580 ELSE 1600 1580NUM) 1070 IS=1 1080 IF MID$(N$,IS,1) = " " THEN 1090 ELSE 1110 1090 IS=IS+1 1100 GOTO 1080 1110 N$=MID$(N$,IS) 1120 M$(N)=N$+" " 1130 SP=1 1140 GOTO 1180 1150 IF SP=1 AND MID$(L$,J,1)=" " THEN 1180 ELSE 1160 1160 SP=0 1170 M$(N)=M$(N)+MID$(L$,J, I=I+1 1590 GOTO 1570 1600 IF MID$(M$(N1),I,3) = "IF " THEN 1740 1610 IF MID$(M$(N1),I,4) = "FOR " THEN 1650 1620 IF MID$(M$(N1),I,5) = "NEXT " THEN 1670 1630 IF F=3 THEN 1710 1640 RETURN 1650 F=3 1660 GOTO 1680 1670 F=0 1680 IS=INSTR(M$(N1)," ")1) 1180 NEXT J 1190 M$(N)=M$(N)+CHR$(13) 1200 GOSUB 1340 1210 N=N+1 1220 M=M+1 1230 IF M > MAX OR N > MAX4 THEN 1240 ELSE 740 1240 FOR N1=0 TO N-1 1250 IF M$(N1)="" THEN 1280 1260 GOSUB 1560 1270 PRINT #2,M$(N1) 1280 NEXT N1 1290 IF ENDS=0 THEN 1690 M$(N1)=LEFT$(M$(N1),IS) + " " + MID$(M$(N1),IS+1) 1700 RETURN 1710 IS=INSTR(M$(N1)," ") 1720 M$(N1)= LEFT$(M$(N1),IS) + " " + MID$(M$(N1),IS +1) 1730 RETURN 1740 IS=INSTR(M$(N1)," ") 1750 M$(N1)=LEFT$(M$(N1),IS) + " " + MID$(M$(N1),IS 640 1300 CLOSE 1310 END 1320 ' ---------------------------------------------------------------- 1330 ' 1340 ' 1350 I1=INSTR(M$(N)," ") + 1 1360 IF I1=1 THEN RETURN 1370 IF MID$(M$(N),I1,1)= " " THEN 1380 ELSE 1400 1380 I1=I1+1 1390 GOTO 1370 14+1) 1760 RETURN M$(N1),IS +1) 1730 RETURN 1740 IS=INSTR(M$(N1)," ") 1750 M$(N1)=LEFT$(M$(N1),IS) + " " + MID$(M$(N1),IS640 1300 CLOSE 1310 END 1320 ' ---------------------------------------------------------------- 1330 ' 1340 ' 1350 I1=INS  L BY FOUND IN FILE ";F2$ 350 PRINT 360 END 370 ' 380 ' 500 X=INSTR(T$,"'") 510 IF X=0 THEN 600 520 Y=INSTR(T$," "):Z=Y 530 IF MID$(T$,Y+1,1)=" " THEN Y=Y+1:GOTO 530 540 IF MID$(T$,Y+1,1)="'" THEN T$=LEFT$(T$,Z-1)+"'":RETURN 550 X1=1 560 X=INSTR(X1,T$,CHR$(34)):IF X>0 THEN X1=X+1:GOTO 560 570 X=INSTR(X1,T$,"'") 580 IF X=0 THEN RETURN 590 T$=LEFT$(T$,X-1) 600 X=INSTR(T$,"REM") 610 IF X=0 THEN RETURN 620 Y=INSTR(T$," "):Z=Y 630 IF MID$(T$,Y+1,1)=" " THEN Y=Y+1:GOTO 630 640 IF MID$(T$,Y+1,4)=100 ' 110 REM THIS PROGRAM WILL REMOVE ALL REM STRINGS FROM 120 'A MBASIC PROG. 130 ' 140 'THE INPUT BAS FILE MUST BE IN ASCII FORM ( SAVE "XXX",A ) 150 'THE OUTPUT FILE WILL BE IN ASCII FORM 160 ' 170 ' BY BILL WOOD, MISSISSAUGA 180 ' 19"REM " THEN T$=LEFT$(T$,Z-1)+"'":RETURN 650 X=INSTR(T$,":"+"REM ") 660 IF X=0 THEN X=INSTR(T$,":"+" REM ") 670 IF X=0 THEN RETURN 680 T$=LEFT$(T$,X-1) 690 RETURN 650 X=INSTR(T$,":"+"REM ") 660 IF X=0 THEN X=INSTR(T$,":"+" REM ") 670 IF X=0 THEN RE0 ' 200 CLEAR 2000 210 LINE INPUT "INPUT FILE NAME - ";F1$ 220 IF RIGHT$(F1$,4)<> ".BAS" THEN PRINT "OUTPUT FILE MUST HAVE A EXT. OF .BAS":GOTO 210 230 OPEN "I",#1,F1$ 240 LINE INPUT "OUTPUT FILE NAME - ";F2$ 250 IF RIGHT$(F2$,4)<> ".BAS" THEN PRI00 ' 110 REM THIS PROGRAM WILL REMOVE ALL REM STRINGS FROM 120 'A MBASIC PROG. 130 ' 140 'THE INPUT BAS FILE MUST BE IN ASCTURN 680 T$=LEFT$(T$,X-1) 690 RETURN 650 X=INSTR(T$,":"+"REM ") 660 IF X=0 THEN X=INSTR(T$,":"+" REM ") 670 IF X=0 THEN RENT "OUTPUT FILE MUST HAVE A EXT. OF .BAS":GOTO 240 260 OPEN "O",#2,F2$ 270 IF EOF(1) THEN 320 280 LINE INPUT #1,T$ 290 GOSUB 500 300 PRINT #2,T$ 310 GOTO 270 320 CLOSE #1,#2 330 PRINT:PRINT "INPUT FILE ";F1$;" WITH ALL REM REMOVED " 340 PRINT "WIL  5 REM MBXREF.BAS MBASIC 5.2 [CP/M ver] Cross Reference Utility 6 REM Downloaded from Prodigy Systems CBBS 5/17/81 T.E.M. 8 E$=CHR$(27):CLR$=E$+"E":PRINT CLR$ 10 PRINT TAB(20);"MICROSOFT BASIC CROSS REFERENCE UTILITY." 20 PRINT:PRINT TAB(20);"LISTS10 DATA PEEK,POKE,POS,PRINT,PUT 220 DATA READ,REM,RENUM,RESET,RESTORE,RESUME,RETURN,RIGHT$,RND,RSET,RUN 230 DATA SAVE,SGN,SIN,SPACE$,SPC(,SQR,STEP,STOP,STR$,STRING$,SWAP 240 DATA TAB(,TAN,THEN,TO,TROFF,TRON,UNLOAD 250 DATA USING,USR,VAL,VARPTR,WAIT,WID ALL VARIABLES AND REFERENCED LINE #S." 23 PRINT:PRINT TAB(20);"MBASIC FILES MUST BE ASCII FOR THIS PROGRAM." 26 PRINT:PRINT TAB(20);"ENTER ONE OR MORE FILE NAMES, THEN JUST RETURN" 29 PRINT:PRINT TAB(20);"TO END THE LIST OF FILENAMES." 32 PRINT:PRINT TH,XOR,"\" 260 ' 270 '...FILL ARRAY WITH RESERVED WORDS 280 ' 290 RW=0 300 READ RW$ 310 RW=RW+1 : RW$(RW)=RW$ : IF RW$="\" THEN 350 320 I=ASC(RW$)-ASC("A") : IF PT%(I)=0 THEN PT%(I)=RW 330 GOTO 300 340 ' 350 FOR I=1 TO 25 : IF PT%(I)=0 THEN PT%(ITAB(20);" ---> BE SURE LINE PRINTER IS READY." 50 ' 60 CLEAR 3000 :DEFINT I-J : LW=80 : WIDTH 132 70 ON ERROR GOTO 1480 80 DIM RW$(126), PT%(25), F$(10) 90 I=450 : DIM VNXT%(540), V$(540), FRST%(450), LST%(450), RFL%(2250), NXT%(2250) 120 ' ...RESE)=RW 360 NEXT I 370 ' 380 '...GET LIST OF NAMES 390 ' 400 FX=0 410 PRINT : PRINT TAB(20);" ---> ASCII SAVED PROGRAM #" FX+1 " = "; : LINE INPUT L$ 420 IF L$="" THEN IF FX<1 THEN 570 ELSE 480 440 NAME L$ AS L$ 450 FX=FX+1 : F$(FX)=L$ 460 GOTO 41RVED WORDS - - - - 130 DATA ABS,AND,ASC,AS,ATN,AUTO,CDBL,CHR$,CINT,CLEAR,CLOSE,CONSOLE,CONT 140 DATA COS,CSNG,CVD,CVI,CVS,DATA 150 DATA DEFDBL,DEFINT,DEFSNG,DEFSTR,DEFUSR,DEF,DELETE,DIM,DSKI$,DSKO$,DSKF 160 DATA EDIT,ELSE,END,EOF,EQV,ERASE,ERL,ERR,EXP,0 470 ' 480 PRINT:PRINT TAB(20);: INPUT " ---> DATE = "; D$ 483 PRINT:PRINT TAB(20);"NOW INDICATE WHETHER YOU WISH:" 485 PRINT TAB(25);"- A PRINTED CROSS-REFERENCE LISTING(S)" 486 PRINT TAB(25);"- A PRINTED PROGRAM SOURCE LISTING(S)" 487 PRINT TAB(FIELD,FILES,FIX,FOR 170 DATA FRE,GET,GOSUB,GOTO,HEX$ 180 DATA IF,IMP,INPUT,INP,INSTR,INT,KILL,LEFT$,LEN,LET,LINE 190 DATA LIST,LLIST,LOAD,LOC,LOF,LOG,LPRINT,LSET,MERGE,MID$,MKD$,MKI$ 200 DATA MKS$,MOD,MOUNT,NAME,NEW,NEXT,NOT,NULL,OCT$,ON,OPEN,OR,OUT 225);"......OR BOTH." 490 PRINT:PRINT TAB(20);: INPUT "1) CROSS REFERENCE 2) LIST 3) BOTH "; M 500 ' 510 '...PROCESS LIST OF NAME FILES 520 ' 530 FOR F=1 TO FX 540 CLOSE : OPEN "I",1,F$(F) : PRG$="'"+F$(F)+"' - "+D$ : GOSUB 610 550 NEXT F 56  0 LPRINT STRING$(65-LZ,CHR$(10)) 570 END 580 ' 590 '...INITIALIZE CROSS REFERENCE 600 ' 610 LC=0 : BC=0 : PZ=0 : V$="" : C$="" : VC=91 : RC=-1 620 FOR I=1 TO 91 : VNXT%(I)=-1 : NEXT I 630 IF M>1 THEN GOSUB 1520 640 ' 650 '...INPUT LINE AND EXTRACT0 : RW$=RW$(P) 930 IF RW$="DATA" THEN LP=INSTR(LP,L$,":") : IF LP>0 THEN 750 ELSE 670 940 IF RW$="REM" THEN 670 950 IF RW$="GOTO" OR RW$="GOSUB" OR RW$="THEN" OR RW$="ELSE" OR RW$="RESUME" THEN BRNCH=1 960 IF RW$="ERASE" THEN ER$="(" ELSE ER$="" 970 L LINE NUMBER 660 ' 670 IF EOF(1) THEN 1200 680 LINE INPUT #1, L$ : IF M>1 THEN GOSUB 1430 : IF M=2 THEN 670 690 LG=LEN(L$) : BRNCH=0 : ER$="" : LC=LC+1 : BC=BC+LG 700 LP=INSTR(L$," ") : LN=VAL(LEFT$(L$,LP)) : PRINT LN, 710 IF LN>32767 THEN LN=LN-6553P=LP+LEN(RW$)-1 : GOTO 750 980 ' 990 '...END VARIABLE 1000 ' 1010 IF V$="" THEN RETURN 1020 IF V$>="A" THEN V$=V$+ER$ : C=ASC(V$)+1 ELSE IF V$>="0" THEN V$=RIGHT$(" "+V$,5) : C=VAL(LEFT$(V$,2)) ELSE 1090 1030 IL=-1 : I=C 1040 IF V$>V$(I) THEN IL=6! 720 ' 730 '...PARSE REST OF LINE 740 ' 750 LP=LP+1 : IF LP>LG THEN GOSUB 1010 : GOTO 670 760 C$=MID$(L$,LP,1) 770 IF C$>="A" AND C$<="Z" THEN 890 ELSE IF C$>="0" AND C$<="9" THEN 1150 780 IF C$=" " THEN 750 ELSE IF C$<>"," THEN BRNCH=0 790 IF C$I : I=VNXT%(I) : IF I>0 THEN 1040 ELSE 1060 1050 IF V$=V$(I) THEN J=LST%(I-91) : IF RFL%(J)=LN THEN 1090 ELSE RC=RC+1 : NXT%(J)=RC : GOTO 1080 1060 VC=VC+1 : IF IL>=0 THEN VNXT%(IL)=VC 1070 V$(VC)=V$ : VNXT%(VC)=I : RC=RC+1 : FRST%(VC-91)=RC : I=VC 108=CHR$(34) THEN GOSUB 1010 : LP=INSTR(LP+1,L$,C$) : IF LP>0 THEN 750 ELSE 670 800 IF C$="'" THEN GOSUB 1010 : GOTO 670 810 IF C$="&" THEN GOSUB 1010 : V$=C$ : GOTO 750 820 IF C$="$" OR C$="!" OR C$="%" OR C$="#" THEN GOSUB 1130 : GOTO 750 830 IF C$="(" 0 RFL%(RC)=LN : NXT%(RC)=-1 : LST%(I-91)=RC 1090 V$="" : RETURN 1100 ' 1110 '...EXPAND VARIABLE 1120 ' 1130 IF V$<>"" THEN V$=V$+C$ 1140 RETURN 1150 IF V$="" AND BRNCH=0 THEN 750 1160 V$=V$+C$ : GOTO 750 1170 ' 1180 '...LIST VARIABLES 1190 ' 12THEN GOSUB 1130 840 GOSUB 1010 : IF C$<>"," THEN ER$="" 850 GOTO 750 860 ' 870 '...TEST FOR COMMAND 880 ' 890 C=ASC(C$) : P=PT%(C-ASC("A")) : BRNCH=0 900 IF CLP THEN P=P+1 : GOTO 900 920 GOSUB 10100 IF M=2 THEN RETURN 1210 PZ=0 : GOSUB 1400 1220 FOR J=0 TO 91 : V=J 1230 V=VNXT%(V) : IF V<=0 THEN 1340 1240 IF LZ>56 THEN GOSUB 1400 ELSE SZ=SZ+1 : IF SZ=3 THEN GOSUB 1410 1250 RZ=0 : I=FRST%(V-91) : LPRINT V$(V); 1260 IF RZ=0 THEN LPRINT TAB(16);   1270 LN=RFL%(I) : IF LN<0 THEN LN=LN+65536! 1280 LPRINT USING " #####";LN, 1290 RZ=RZ+1 1300 IF RZ>6 THEN RZ=0 : LPRINT : LZ=LZ+1 : IF LZ>56 THEN GOSUB 1400 1310 I=NXT%(I) : IF I>0 THEN 1260 1320 IF RZ>0 THEN LPRINT : LZ=LZ+1 1330 GOTO 1230 1340 NEXT J 1350 ' 1360 LPRINT STRING$(80,"=") 1370 LPRINT "LINES: " LC " BYTES: " BC " SYMBOLS: " VC-91 " REFERENCES: " RC+1 1380 LZ=LZ+2 : RETURN 1390 ' 1400 GOSUB 1520 : LPRINT "SYMBOL" TAB(20) "REFERENCE LINE" : LZ=LZ+1 1410 LPRINT STRING$(80,"-") : LZ=LZ+1 : SZ=0 : RETURN 1420 ' 1430 X=1 1440 IF LZ>60 OR RIGHT$(L$,3)="'PG" THEN GOSUB 1520 1450 Y=INSTR(X,L$,CHR$(10)) : IF Y>0 THEN LPRINT MID$(L$,X,Y-X) : LZ=LZ+1 : X=Y+1 : GOTO 1450 1460 LPRINT MID$(L$,X,LW) : LZ=LZ+1 : X=X+LW : IF X?!hw#w#w!"D"a"c &\͓ <ʽ=! o:K~$} o:U$#*V w#]o&ͷo|gͷo|gr#s#"V*D#"D! *{z$3 Memor)÷Ͳ *D}x2\*]!N s#r# +}*D"Z+}^*Z|g}o^}o"J#"M*J{ozg"O*J"Q>  I*O*Q *O*J{ozgII*Z*M#{z*J:!5͓ <‘͓ <3 Ope3 Writ͓ <ʂ:ڸ!4͓ <š5͓ :=2͓ 3 Appen!~#!5!5͓ <:=2843: SD v9.1 - 07/27/8MAXUSR TBL>!9"L1L!{Dw# I`w# U }2e  ԓ 2Y2U2?!~#‚w\ xʏyʛ2U2?͓ 2X<2!\~¶:X<ý>2w!F#~$+~#  !z # !6DA2":#>2:# U Ͳ *D"!""!N""V*D.*]" " *D+"D|m*V> m##"VL*V^#V#"V*  "  7Ͱ*c"c*a#"a|}*D|xLV#^:B_zW/_zW{_ɯ2S2S:\2\2\>0:!\>w:>2U2?Uii &0i i2U2?>20 o:Ug2U2?Ͳ U U !~ʊ #~>? Ͳ H :|¨>2>2:}»>2>2:~>2>2: ̓ :̘ :̌ :\=3 _!(~2T! 0x0(:S>0 :\ 2S T])))Dļ *~K >. K n V#^>k *a+"a| ɯ2\*a|2:IJ U :\@ ڦ͓ U :U  U *cU :U3 !]~$  6?#>?2h !\^͓ X##~2C#~2B##^#V"@#^#Vw*.;^#~2C#~2B#^"@æ"F:e0ڦ:\=_.͓ !~w+” Ž**@#ڼW+}z·ói`:C)="H*F#)N"]"V*{zҮ :U *a  y22\o&."* >w#-!a4Ͳ :O:\@ ԓ >: * 6ʝ* 6ʝ:ʅʅ* 6ʝÆ:œ* 6Ý*  " *a|ʶ!57:*a| :{ n :T!U4:?w!~6 !~6 *6  #=͓ ‰͓ !~6f !5U :D D U J U :\@ [ ͓ U 4:} n >!\4} :H  ͓  ͓ H :U ڭ / Ҟ Gy x0 > > : > E G: *: Ͳ ͓ ‰!>p#"=2K -*|&  ++ Not a LIBRARY file ++ f͓ :U_ ԓ ͓  > # #P^#~ #^#Vz "*#":2!ã*}+"6f͓ Ͳ !~ʳ £Än !:>* > #K >. K ##^#V*"!{x_:̓ { A :A :  c ʆ  2_~ #K  U *. ͒ *.͒ c _ c _  ͓ G:e0xڮ ® | x :Y_ ԓ  Ó 'U *H(U ^#V#N#F_~W #  L)_j)))))>k *#":=2ļ ¨:2Ͳ è~#7!V# I>* >* ** Library Directory for ** Lbr Members inLBRDrive/Use [more] $ $ Erro - >> No detectable file(s) on>> No file(s) on: D ) Nq#NqL) ) N#F^#V_~W ## >2Ͳ U U Ͳ :_ n >!\4_ Ͳ  ͓ ē :e0 -͓ Æ :̘ ::X_̓ *L:e0ڨ -͓ *}ʶ >D2. \>FNpq#=½ :e 1LH >2 2 $կ ~#: ,Z !Z rive space used:k : files:k free) *** There are member files in library(s A468DFLNPRSVSD DIRr ** Lbr Members inLBRDrive/Use [more] $ $ Erro - >> No detectable file(s) on>> No file(s) on: D~ A A <2 #~:[ ?0 2 #~:[  G~#:N 0  OxG2 x  2 [ ~:b #~,m !҅  >?r : G: O>͟ ~.™ #͟ x Ϳ x ʿ *± >?ó #Ÿ #÷ > ¿ ~ ! =_.:;,<>ɾa{ !N"2 v9.1 07/27/84 The SD Super Directory Program This documentation file concerns SD-91.ASM. This is a signifi- cant upgrade of the standard "super-directory" program that most RCP/M systems are now using as their "DIR" executor. *+"|Z n *> Z ##" *|2\!:IJ Z0U @U *QU *^#V#"!@!:IJ :ʐ ʐ U Ö gU :\@ ͓ >: K >. K Ͱ>k Ͳ :\f 76# 6f͓ f͓ Ͳ !~K! The newest features deal with video display format. Several new equates have been added to allow maximum flexibility to the user or SYSOP. A description of these equates follows: A new feature has been added that does away with the need for seve  ral versions of SDxx. SD-91 allows the inclusion of a 4, 6, or 8 on the command line which relates to 40, 64 & 80 column display. (2, 3, or 4 filenames per line.) The default value is that stored in NPL and LPS if MAXCL is NO, and the value at MAXCLsetting LPS2 to a value of 8. Here are some command line examples: If MAXCL = YES A>SD Will display all files on current drive using the value stored at MAXC to determine the number of filenames per line. A>SD $6  and LPS1,2 or 3 if MAXCL is YES. MAXCL This equate, if YES, enables RCP/M operators to store the value of 2, 3, or 4 at the location defined by MAXC. Just have your signon or RBBS program ask for or assign a value for NPL (names per line) an Will display all files on the current drive and display files in the 64 column mode (3 filenames per line). It will also store a 3 at the memory location defined by MAXC for subsequent use by SD or any other utility that uses the vd store it at the location MAXC. The suggested address for MAXC is 3BH if using 3EH for the wheeel byte location or 3EH if using 3BH for the wheel byte. No more need to keep several versions of SD online, such as DIR40, DIR64, etc. The followinariable filenames per line. If MAXCL = NO A>SD Will display all files on the current drive using the value defined by the NPL equate. A>SD $4 Will display all files on the current drive and display files in g equates are the values for the number of lines per screen (LPS) to be changed as needed when MAXCL = YES. LPS1 This is the number of lines per screen if NPL = 3. (64 column option) LPS2 This is the number of lines per screen if NPL < 3. (40 the 40 column mode (2 filesnames per line). It will revert to the mode defined by NPL on subsequent uses of SD. KTHREE This equate allows control over the number of columns used in the display of file sizes. If KTHREE EQU YES then only column option) These additional equates allow one to specify the number of lines that will be displayed for each of the optional formats (4 & 6). This would allow one to set SD for optional remote use with a TRS-80 Mod 100 (for example,) by  three digits will be used, limiting proper display of file sizes to 999k or less. If KTHREE EQU NO then SD will use five digits as it has as of SD-89, allow- ing files as large as 64,535K to be displayed. The advantage of using KTHREE UQU YES is that   you may now use a fence charcter even in the four file display mode. This makes the display more readable. NOTE: As of SD-91, KTHREE only changes the display of individual file sizes and the totals are not affected. PDRI & PRUS - These equancurrent with the $U option. The filename of the file for the $F option has been altered to SD.DIR, as it was originally. Other op- tions such as multi-drive search remain as before. Now, in place of the $U option, you may specify the Drive/User with tes allow (if YES) or disallow (if NO) the printing of the drive and/or user numbers at the front of each file dis- play line. These affect only the video format and all printer formats still report the drive (and user if REPUSR EQU YES) numbers. Thisthe filename, such as: SD A1:*.*, SD 1:*.*, SD B:FN.FT, SD B4:FN.FT $AD, etc. You may still use the $U option if desired, although it seems the DU: form is a much easier and more logical method. File lengths over four megabytes are read correctly.  al- lows the display of the user number without the drive spec if this format is needed. A good example would be a 40 column format used on a RBBS which makes use of a large number of user areas. PRLIBD If this equate is set 'NO' & PRDI and P Files may be shown in vertical or horizontal listings, although this must be set when the program is assembled for a particular system. The distribution copy is set for vertical alphabetization since most non-RCPM users will likely prefer this prRUS are 'YES', SD will suppress the display of drive/user numbers on LBR file display lines. One may wish to use this format if PRBRDR EQU YES. PRBRDR allows the printing of a quasi-border around the left side of library file member lines if seesentation. (SYSOPs will need to set a number of equates and reassemble the file in any event.) SD-91 has support for .LBR files, (an 'L' option to list their mem- ber files) and support for the NZCPR/ZCPR2 "WHEEL" byte option. (Note: SD-91.COt 'YES'. This makes for a much more readable format when displaying a large number of LBR files. The most significant improvement is the support of the DU: form for drive-spec, similar to that used by ZCPR2 and its various utilities. This is coM is not set up for ZCPR2 use.) Size of library member files is shown in 'k'. The basic operation of SD is as in previous releases. You merely type "SD", followed by an optional ambiguous or nonambiguous filename (as you would with the CCP dir  ectory command). Omitting the filename (i.e., "SD "), will be interpreted as "SD *.*". Similarly, "SD A:" would imply "SD A:*.*" and "SD B:" would imply "SD B:*.*". In addition to the filename option, up to 11 command line options may be s is an assembly time option which, if set, allows the use of options without requiring the filename to be preceded with a drive code so long as you wish to look on the default drive. You give up the ability to specifically search for a filename wpecified. Option fields are preceded by a single dollar sign as with most Digital Research programs such as MAC, and may be essen- tially free-form in format. Example: SD B:$ADnU0fpS. Spaces within the option field are insignificant i.e., "$ SADN U0hose name begins with a '$'. However, such files will be listed, along with others, if the command line "SD $CU3" (or any other options) were speci- fied. The "COM" file is configured with this option set. Setting the option to 'NO' and reassemblinFP" is equivalent to "$ S A D N U0 F P"). The only exception concerns the "USER" option which will be explained later. Users should also be aware of two restrictions on the command line format. SD scans the entire command line for a dollar g will cause operation to revert to that of previous versions (see paragraph above). The second restriction is that command line options may be specified once and only once per invocation. That is, "SD A:$SDS" would be il- legal since the 'S' sign preceded by at least 1 blank to delimit the beginning of the option field. Forthis reason, invoking SD with a command line such as: "SD $ $AR" is illegal, since SD will consider the first dollar sign to be the option field de- limiter. If you neoption is specified twice. This shortcoming is due to the fact that options can be made into defaults at assembly time. Note that if an option is made default, with zero as option flag, it cannot be specified without generation an error message. The eled to specify a filename whose first character is a dollar sign precede it with a drive code as in "SD A:$ $AR". In this instance, SD will consider the first dollar sign insignificant as it is not preceded by a blank. Starting with SD-75 thereeven re- cognized options: "S" - system option: System files will be included in the output rather than being suppressed. "F" - file option: The directory output will be echoed to a disk file named "SD.DIR" on the DEFAULT drive. If this   name already exists then the directory output will be APPENDED to the end of the file. "SD.DIR" will otherwise start as a new file. The append fea- ture allows you to build up one massive file on the de- fault drive containing the directories of but "U 1" is not. In this respect, the 'U' option differs from the other options in that embedded spaces ARE significant. "A" - all users: Causes SD to display directories of all user areas starting at the user area specified in the 'U' o all of your disks, without having to concantenate a swarm of indi- vidual directory files. If you plan to use this fea- ture often,it will be simpler for you to have a dedi- cated version on your MAST.CAT disk with AUTOR set 'YES'. The advption or, if the 'U' option is omitted, user area 0 and continuing up through the MAXUSR value from the LODRV-HIDRV table. (If ZPR2/WHLUSR=TRUE and the WHEEL byte set, 0-MXZUSR.) "L" - LBR list option: Allows for listing of ".LBR" file membeantage of this is that you can work thru a pile of disks without having to CTL-C or specify the 'R' option every time you SD a new disk. Failing to do this will result in the allocation vector being inval- id, and FREE size will be wrong. "Urs. ".LBR" file members are shown followed by their length in 'k'. The total length of the entire library is also shown. "V" - If included, SD version number is displayed. "C" - If included, clear screen performed before directory inf" - user option: Allows the specification of the user num- ber for the directory of the form "Uxx" where the user # is greater than 0, but not greater than a specified value not to exceed 15. The user option specification will be illegal if the uormation is displayed. "N" - no page option: Unconditionally disables the page pause option. Useful when running SD in the 'F' and/or 'A' modes when you don't want the page prompt slowing you down. SD-91 will not put the page-pause prompt ser # is out of range, omitted, or if 'U' is specified on a pre-CP/M 2 system. Since the user option requires a parameter (i.e., the user number), the user number must immediately follow the 'U' option on the command field. That is, "U1" is legal, into the output file or to printer if either enabled. "P" - printer option: Forces all console output to be echoed to the CP/M list device, with the most significant bit set to 0. "D" - all disk option: Allows SD to search all disk drives    on-line starting with the disk drive specified or im- plied with the command line filename. For example, "SD B:$D" will result in SD searching all drives begin- ning with drive B. "SD $D" will result in SD searching all drives automatically begep its mouth shut and ignore everything on the command line past the illegal field. In this situation, an illegal- ly specified user number would default back to the current user number. The option of DISABLING error reporting was included primarily foinning with the A drive, regardless what drive you started on. "R" - Reset disk system: A disk system reset is done before directory information is accumulated. "4, 6, or 8" - Filenames per line option: These will allow the user to specifyr sys- tems with hidden doors and secret passageways. Shooting off rockets and clanging bells everytime a twit starts "experimenting" just calls atten- tion to the fact that there really IS something behind that hollow- sounding wall after all.  the number of filesnames per line to be used in the display. The format used relates to 40, 64, & 80 column display which is 2, 3, & 4 lines per line respectivly. If MAXCL = YES, the specified value is stored in the memory location defined by MA As an added convenience, it is possible to "hard-wire" some or all of the command line options. For example, if you want SD to ALWAYS list system files, you can do that. For details, see the comments preceding the option field lookup table in the assXC. If MAXCL = NO then SD reverts back to the value defined by NPL after displaying the optional format. If MAXCL = YES and WHLCL = YES then SD will not allow the use of these a command line options and will use the value stored at MAXC for dispembler source file. Finally, if the all-disk and/or all-user options are enabled, it may be desirable to restrict searches. To facilitate this, a table is included in SD (beginning at label "LODRV" and continuing through the "HIDRV" label). Thelay. If an unrecognized option (or illegal user option specification) is detected, then the command line will be played back to the console up to the point where the error was detected. However, if the REPERR option is disabled, then SD will ke table consists of a single byte for each drive to be searched beginning with 'A'. Each byte may be in the range of 0-15 mod 15 and defines the highest user number that SD will search for that particular drive. The highest drive number to search is de  fined by the length of the table. If four DBs are present between LODRV and HIDRV, then drives A-D can be searched. The source file includes the LODRV- HIDRV table in its maximum configuration for 16 drives. However, delete DBs referencing drives th similiar to XMODEM except QUITE set to ; YES will not report "Time on system is xx minutes" but still ; checks MAXMIN. If xx is => MAXMIN the user is told not to ; call back for 24 hours and automatically logged off. If ; STATUS is nat aren't available on your system. Although SD will intercept attempts to search non-existant drives, there really isn't any point in allowing SD to always search drive C when you only have 2 logical drives; and depending on how your BIOS is constructon-zero, the "Time on system" message is display- ; ed but no comparison to MAXMIN is made. ; ; The SYSOP must add code to the beginning of TIME which will ; read his realtime clock and store BINARY values of the cur- ; rent hour (0-23ed and how long it monkeys around before advising the BDOS of the select error, it could save some time. You don't really have to be running NZCPR or ZCPR2 to use the WHEEL, MAXUSER, MAXDRIVE, or MAXCL byte features - just have your signon or R) and the current minute (0-59) in locations ; pointed at by CHOUR and CMIN. The SYSOP must also code his ; BBS entry program (or BYE) to store the BINARY hour and min- ; utes of the user's logon time in LHOUR and LMIN. The BBS ; (or BBS program assign and store the correct values in the proper loca- tions to enable these features, or add code to BYE-xx to provide the correct values when a remote user logs on. (before entering CP/M). ; 04/17/84 Added TIMEON equate and TIME routinBYE) software should also determine if the user has ; special privledges (such as SYSOPs, frequent uploaders etc.) ; and store FF (or non-zero) in the byte pointed at by STATUS. ; Store a 0 in STATUS for normal users. ; ; If TIMEON ie to calculate the time a ; v8.2 user has been on and if STATUS is non-zero that delta time ; is compared to MAXMIN to see if user will exceed his total ; time limit. If he does, the user is informed and logged ; off. This routine iss YES, MAXMIN should be set to ; 60. TIMEON uses 5 bytes in page one memory not used by CP/M ; (similiar to WHEEL and MAXDRIV). They are: ; ; CHOUR EQU 043H ;for basic ; CMIN EQU 044H ;programmers the decimal to poke ; LHOUR EQU 050H ;is   80 ; LMIN EQU 051H ;81 ; STATUS EQU 053H ;and 83 ; ; Be sure to store binary (not ASCII) in these locations. ; - Wayne Masters - Written by Kim Levitt - Updated by Irv Hoff - Further updates by Dennis Vallianos - Updatedge P - Printer option - lists to printer R - Reset disk (perhaps a new one installed) S - Shows system files (otherwise doesn't) V - Shows date, version number U8 - Start with user 8 4, 6, or 8 - Displays files in the optional 40, 64 o for SD-91 by John Ray Written by Kim Levitt - Updated by Irv Hoff - Further updates by Dennis Vallianos - Updated Wayne Masters - Written by Kim Levitt - Updated by Irv Hoff - Further updates by Dennis Vallianos - Updatedr 80 column format Using the $D option now automatically starts on the 1st available drive (usually A:) drive regardless what drive you were on when you started. It then checks all available drives. Similiarly, using the $A SUBJECT: SD-91 super directory program DATE : 07/27/84 NOTE: SD-91 works automatically with any number of disk drives, up to 16. If a disk has been left out of a drive, the program passes that drive and continues. It can be intentionalloption will now always start with User 0, unless entered as $UnA - where n is a valid user number above zero. You may now use ZCPR2 drive/user# syntax, i.e., A0:, B5:, ect. and there is no need to specify a drive spec in the command line, y set to work with a specified number of drives, however. ======================================================================== QUICK SUMMARY OF OPTIONS: B>SD $U4ADL (etc.) A - All user areas allowed, usually 0-15, less on RCPM systemi.e., SD A: $AD. You You may now vary the number of file names per line on the fly. You may also use (and store) the value used by SD for display at the lo- cation defined by MAXC by enabling the MAXCL equate (YES). Then just have yous C - Clear screen (if activated for your CRT) D - All disks starting with 1st available (usually A:) F - Makes a file called DISKMENU.DIR automatically L - Library list option N - No pagination, keeps scrolling if more than one full par signon or RBBS program assign the proper value for number of lines, (1-4) and store it at MAXC. This means there is no more need to keep several versions of SD online. - Notes by Irv Hoff - update by Dennis Vallianos - update   for SD-91 by John Ray veral versions of SD online. - Notes by Irv Hoff - update by Dennis Vallianos - update no more need to keep several versions of SD online. - Notes by Irv Hoff - update by Dennis Vallianos - update ; SUPER DIRECTORY PROGRAM ; ; Displays the directory of a CP/M disk, sorted alphabetically, with the ; file size in k, rounded to the nearest CP/M block size. Also displays ; library files with the file size in k if the '$L' option is used. ; ; Current versions of SD will automatically adjust for any block size ; and directory length under CP/M 1.4 or 2.x or MP/M (any version). ; They also automatically adjust for any number of disk drives and work ; satisfactorily even if no disk is in that dri  ve at the moment. Provi- ; sions are made for: ; ; (1) automatic pauses when the screen fills up ; (2) searching individual or multiple drives and/or user areas ; (3) unconditional or optional resetting the disk system before ; execution begins r MAXCL automatically. Because ; of this, the status line appears as it did prior to SD-90. ; The NPL equate now sets the default number of names per line ; if no command line option for columns is specified unless ; MAXCL = YES. -  ; (4) directing output to a disk file called SD.DIR and appending ; to that file on subsequent runs ; (5) summary line output giving drive and user information, # of ; files matched and how much space they consume, and the a- ; mount of frJohn Ray ; ; 07/24/84 Added MAXCL, MAXC & WHLCL equates to allow RCP/M operators ; SD-90 the option to change the number of filenames per line dis- ; played on the fly. Setting MAXCL = YES will enable external ; storage of the names per lee space remaining on the disk ; (6) displaying or suppressing "system" files ; (7) accepting ambiguous filenames with or without a drive name ; (8) printer output ; (9) can make a ;disk file of the results called DISKMENU.DIR ; ; ; See SD.DOC for dine value which is stored at loca- ; tion MAXC. This can be used in the same way that MAXUSR and ; MAXDRV are used by ZCPR. The names per line option is also ; available from the command line by including a 4, 6, or 8 as ; one of the oetailed instructions on configuring and running SD.ASM ; ;======================================================================= ; ; 07/25/84 Added routine to allow the command line or MAXCL option for ; SD-91 names per line to function with VCOptions which relates to 40, 60, and 80 columns. ; (2, 3 & 4 names per line.) The suggested locations for MAXC ; are 3EH if using 3BH for the WHEEL byte, and 3BH if using 3E ; for the WHEEL byte (NZCPR, ZCMD ect.) Note: MAXCL & VCODE ; DE. (After several ; threats from my friends.) Also fixed a few small bugs in ; the display format I found after releasing SD-90. The state ; of MAXCL now has no affect on the drive status lines. They ; now follow the value of MNPL oare mutually exclusive. A decision was made not to add the ; code required to enable the variable names per line feature ; to the VCODE section since a vertically sorted display does ; not lend itself well to variable column format, i.e., s  creen ; scroll in 40 column mode, ect. Changed drive status lines ; to a format that will work with the variable names per line ; format. This is changed when MAXCL = Yes only. Added the ; equates LPS1 & LPS2. LPS1 is the number of  It was 15 in version 86, 85, ect. Now for ; SB1. OOPS... I goofed. I was under the impression the ; value stored at MAXUSER was treated the same as MAXDRIVE, ; i.e., a value of zero equals first user, first drive. ; It seems howevelines per screen ; if MNPL (names per line) = 3. LPS2 is the number of lines ; per screen if MNPL <= 2n. No more need to keep several ver- ; sions of SD-xx online. If MAXCL = NO, the command line ; option is still enabled, but the var that a value of 1 at MAXUSER represents ; user # 0. I still think a zero=first user # makes more ; sense. 0=U0, 1=U1, ect. Oh well. Made KTHREE not a bum- ; mer. It now affects only the file sizes and not totals. ; Thanks to Waynelue for NPL (names per ; line is stored internal to SD. WHLCL is provided to disable ; the auto name per line option. Although most versions of ; RCP/M program source list 03E as the ZCPR2 WHEEL byte ad- ; dress, the ZCPR2 manual list Masters for pointing out this problem. ; - John Ray ; ; 07/04/84 Changed DECPRT routine to process numbers up to 65,535 which ; SD-89 brings us a bit closer to CP/M plus drive size limits. ; - Sigi Kluger ; ; 05/09/84 Fixed the three s 03B as the recommended address. ; If you are using an unmodified version of ZCPRHDR as obtained ; from SIG/M volumes 98, 108, or 116 then use 03B in your ; utilities. If are using NZCPR or ZCMD then use 3EH as the ; WHEEL byte addressmajor bugs for RCP/M operators introduced in ; SD-88 SD-87. First, WHEEL byte is 03E not 03B. Second, MXZUSR is ; 16, not 15. Third, and most important, I put back the SBI 1 ; code to subtract MAXUSR value to be compatiable with the SD ;. Changed MXZUSR back to 15. The com- ; ments after MXZUSR tell the whole story. Max user #. NOT ; max # of user areas. A value of 15 yields 16 user areas ; (0-MXZUSR) as it should. Note: I had not changed MXZUSR ; from 16 to 15.  compare logic. The KTHREE option is a bummer for RCP/M op- ; erators if ANY user area has more than 999K of files TOTAL, ; which most large systems do, which makes PRDI and PRUS use- ; less unless you limit 3 names per line on your dis  play. ; - Wayne Masters ; ; 05/06/84 Added equates: KTHREE, PRDI, PRUS, PRLIBD, & PRBRDR. Refer ; SD-87 to SD-xx.DOC file for details on these new equates. Fixed ; a bug in the screen display format that showed up when a ; drive with DDT. - J.P. Sage / J.E. Byram ; ; 04/23/84 Combined Sigi's version of SD-83 with my SD-82 version which ; SD-84 added the TIMEON routine used in XMODEM. Read the SD-84.MSG ; file. - Wayne Masters  SD-82 version which ; SD-84 addwas found to have no files. ; - John Ray ; ; 04/29/84 Fixed error in TIMEUP routine. Thanks for help from Paul ; SD-86 Wood. Also moved the TIMEON instructions from the .MSG file ; to the .DOC file. ; - Wayne Masters ; ; 04/26/84 Consolidated the two SD-84 versions. ; SD-85 - J.E. Byram ; ; 04/25/84 Reformatted informational line displays. Added user number ; SD-84 to "No file" error report. Consolidated drive/user error ; reports to resolve problems introduced by DU: option. Also ; leaned up several inconsistencies in code. Modified to allow ; for all 32 user numbers under CP/M 2.2. Rearranged tables ; to put all uninitialized data space at END of program. Code ; added to replace initialization using DBs so that SD can be ; rerun using the ZCPR/ZCPR2 GO command with new options. ; Moved all terminal dependent values to front of program and ; repaired the code so that these values are fully utilized and ; may be patched    ----------------------------------------------------------------- VLIST.DOC 11/10/81 VLIST.COM is a version of MLIST.COM (see MLIST.DOC) which provides for varying the speed of display on the CRT. This is useful because you can skip past the unwanted parts of readable files such as .DOC files, and slow down to a comfortable reading speed when desired. This is much more relaxing to use than CTRL-S to stop start the display. How to use. A>VLIST filename.typ ...or wildcards as in MLIST ...then when the program signs on, you may begin using the "accelerator pedal" to go slowly or speed up. CONTROL - L is the lowest speed display. CONTROL - K is twice as fast as CONTROL - L. CONTROL - J is twice as fast as CONTROL - K. ..or four times as fast as CONTROL - L. CONTROL - H is "high" speed, the normally fast display speed you get from MLIST or TYPE. ----------------------------------*K͞+##+'+FÎr ͖ 8{ Ăw#w#w^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z-------------------------------  display speed you get from MLIST or TYPE. ---------------------------------- ----------------------------------------------------------------- VLIST.DOC 11/10/81 VLIST.COM is a version of MLIS7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/o  #z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r! n͐! ~#fo! n&)~#fo`iͪ>q?>f>aK>ʕ>xW>ʟ>c>ʢâ`iͭ>y>ʈ>a…>ʋÒÒ`iͰ`iͰ! ~#fo! n&)~#fo!e ͤ! 4!!9Syntax: XTYPE filname.typ ... Wild ch+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77ars. (* and ?) OK, Multiple file names OK Ctrl-S pauses, Ctrl-C Aborts, Ctrl-X skips to next file can't type %s... Ô k=èÊ!9DM͐| | ͐!  !Í *͐͂ ! s#rz ͐!  !Í ͐ͅ !a{   `OE!y6$ -7rBo&))T])))!y":>""G #Ϳ,"x ..Ϳ,.ͭ'5':>?2>I#:>>2> *<-*N*l*2>ͻ':?[#7/ͽ6:>1$:>$:?! s#r! ~#fo n&|? ͐!  *͈ !Í ! ~#fo#n&|j ! ~#fo##n&|ڢ ! ~#fo n&|Ґ ͐!  *͈ !xÍ ͐͐ ͋ ! ͐ ͎ |I !# ͐ ͎ |I !( ͐ ͎ |I !- ͐ ͎ |I !2 $_,:>#)’#>66:?6#*?|£#2͈7#>66:?6>#6>66: ?6#*?">)#>6:?6>s6>@2>#2͈7#ͺ)#:>=2>))$>s6#́)($2:>"$2͈7#3͈7#*>">*?">:?ʒ$:>s$)f$>>6:?62͈7#2͈72͐ ͎ |I !6 ͐ ͎ |I !; ͐ ͎ |I !@ ͐ ͎ |[ *͈ !Í ͐ !.͑ `is#rzʇ ͐##n}Q‡ !qÍ !aÍ !9 '%s' bad name, (name too long) Error on %s, check your spelling. Error on %s, check your spelling. F>#)f$>6:?6>{62͈7#)«$:?„$>}62i$:?$.́)$>&663i$:?$_,w#:>$h-_,$:?>$>6_,>6>@2?$*>">óG=y E O!9DM! ! ͐͡|!ͤ!ͤ! ͤͧ!, ͤ! 6ile %s not for distribution. .COM.OBJ.BAD.LOG.OV.REL.CRL.IRL` g=ë!9DM* w#wH K *N |ʠ *Q !a*N ! s#r`i! s#r͐*T s! ^#Vr+sn}¾ *N ! s#r͐|!   ͐|/ ͐!"W *Q !*6#6*##6#6! w#w͐͐ң ͐))**N s#r͐))*##*N s#r! ^#Vr+sI `i͐!CW *w#w*w#w*6#6*Z ! s#rzM|͐|W͐#`is#r͐|'!+͐`is#r͐8!9M=!9DM!!D|!!D! s{ŠG! n}!!D|ʮÕ!!D! s! n}!;J*6#6! n&!D! n} !] *Q !!9%s has invalid decode tree size %s -> %s ^=ë!9DM͐!R*w#w*w#w*6#6*U`is#rzM|͐XÖ*[!!9 Listing file %s !9DM͐` n} *6#62! n} 2*^#Vr+s!9 FÚ !y9DM! `i@`iC!9!9DM`iw#w! ^#Vr+sn}ʘ`i^#Vr+sy͐ß!9î!9DM͐!͐ͫs#rz!͐##w#w͐~#foY!9DM͐is#r͐n}{͐n͐ n}m͐`is#r͐ ! s#r͐n}F͐Á`i^#Vr+sn! ^#Vr+sn}jm5! ^#Vr+s!Á!9!9DM͐n}! n͐n}³͐! ^#Vr+sÒ!*w#w*6c#6C!9DMM|!͐~#fo!9DM͐`is#r! ^#Vr+s! ^#Vr+sns{W1͐^!9m!9DM͐j`is#rz͐j! s#rz͐?͐ù!ù!9\Ñâ!9DM͐|Ñ͐+++|!Ñ͐*^#Vr+sMââ͐`is#r!p|d͐*s#rM#|Y*60#6uMââ͐*s#rz‡!ââ*~#fo++s#rMâ!9ñA!9DM! n&|g}o! s! n}*6#6A! n&| ! n&##^#Vr+s|z!͐͐~#fo`is#r!M͐##^#Vr+sÑ͐##͐?+s#r͐͐s#r͐^#Vr+sn&Ñ!9é;w!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{`in}%! !|5! n} 5! n} 5! n} 5! n} A! n&ͮI!9DM`iw#w*^#Vr+s!|͐F*s#rz!8*w#w͐))*M|g}o)~#fo`is#r͐))**~#fos#r!|g}o)~#fo`is#r͐ s#r! 6#6! s! s! s͐n}-9! ^#Vr+s! 4͐n}0I! 4͐n&͠}f! ͣi!! s#r! ^#Vr+sn`is{.±! ͣ! s#r! 4! ^#Vr+sn`is`in&ͦ}DUX"O+CqSʢ͐~#fo|! ^#Vr+s6-͐͐"  ~#fos#r! ^#Vr+s! 6 1! 61! 6! ~#fo! n&! ^#Vr+s~#fo! ͝ѯgs#r! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s! n}µ! 6#6! ^#Vr+s~#fo! s#r͐n}͐|! ^#Vr+s! ^#Vr+sn+"*"*u#"u  , > _ ;eÑo#K à##Ô k!!9DM!J!n s͐{~#fo! s#r͐y~#fo! s#r`i6#6!l w#w!M! s#rz!> !o 6#6͐o͐'! ~#fo͐o)~#fon}!Z͐o+|s! ^#Vr+s! ^#Vr+s͐6! ! s#r! n}q! ^#Vr+s!q! ^#Vr+s! n}h!0k! s6͐! ^#Vr+sns{ʚ! ^#Vr+sq! n}! ^#Vr+s!! ^#Vr+s6 ä! ^#Vr+s`ins! ^#Vr+s`ins͐6(! ~#fo͐)!G s#r! ^#Vr+s!l ^#Vr+s)!D ! ~#fo͐o)~#fo#s#r! ~#fo͐o)~#foP|¬! ~#fo`i^#Vr+s)! ~#fo͐o)~#fos#r! ~#fo͐o)~#fo! S!. !B s#r! ~#fo͐o)~#fo#n!/ s{:5! ~#f!9!9DM͐n}9! ^#Vr+sn& A;!9DM͐͐ ґ͐^#Vr+s͐ ~͐0Æ͐7s!&͐ ͐͐ ͉͐>`is͐ ͐͐ )͐>`in&#&!9!9DM! n&0ͯo͐o)~#fon!. s!0 !B s#r!. n&!J!- 6! !- n}P!S!J!, s!, n}m!- 6!, n& ?V|!, n& ?͐BY! ~#fo͐)!. \#Ms#rz!> !. ! ~#fo`i^#Vr+s)~#fo! n&9ͯ!9DM`iw#w͐~#fon&}g͐ ?͐^#Vr+snѯg`is#r(͐n!9}ï!9DM! n&z|ʤ! n&é! n&!9DM! n&aͯ! n&zͯ  ) ,7*+++:G_;!n n&!J!o ^#Vr+s!o w#w͐o͐l !q 6#6͐q͐ !n n&! ~#fo͐q)~#fo͐o)!D ~#fob| ͐q`i^#Vr+s¨ ͐q!s s#r͐s͐! ~#fo͐s)! ~#fo͐s#)~#fos#r!s ^#Vr+sôX_*DM!o&7,2q*&:q):Q=Q=r:qo&#:wok2w&!o Ž . &7:O*7:)~:,"s!"u*|**s! ~6*u*!q ^#Vr+sH!o ^#Vr+s/͐y͐s#r͐{͐s#r!> !u9*.*!9DM! ^#Vr+sn`is{ʅ `in}*| `in}?‚ !Ë S !Ë !9!9DM! w#w`i6#6͐|!! ~#fo͐n} !! ~#fo! ^#Vr+s! ~#fo͐n&|#  g}os`i^#Vr+së ! ~#fo n} A!! ~#fo! ^#Vr+s6.`i6 #6͐|ұ!! ~#fo͐n} n!ñ!! ~#fo! ^#Vr+s! ~#fo͐n&|g}os`i^#Vr+sH!! ~#fo͐6͐!!9!9DM! ~#fo#n}:4"! ~#fo#n}:1"! ~#fon&! n&+"! ~#fo##s#r1"!f#{"! ~#fo#n}:{"! ~#fon&! n&u"! ~#fo##s#r{"!f#! ^#Vr+sn`is{M#`in}?"! ^#Vr+sn`is{"`in}."{""!f#J#`in}*&#͐n`is{"! ^#Vr+s`in}."""͐n`is{##! ^#Vr+s`in}. ###"J#`in! ^#Vr+sn}D#{"J#!f#{"͐n}`#!f#f#!f#!9 *ڕ#+*|/g}/o#9͙#ҕ##"z{7*~# ʧ# ʧ#+*&! n&XTYPE.DOC 07/21/82 XTYPE14 IS AN EXTENDED "TYPE" WHICH WILL IDENTIFY SQUEEZED OR UNSQUEEZED ASCII FILES, AND THEN "TYPE" THEM. THIS ELIMINATES THE NEED FOR TYPESQ.COM AND MLIST.COM BOTH BEING ONLINE ON RCPM'S. ZED ASCII FILES, AND THEN "TYPE" T$   First Osborne Group (FOG) -FOG/UTL#055 Copyright 1984 by First Osborne Group (FOG) to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P.O. Box 3474, Daly City, CA 94015. ********** EX14.COM: is a maintenance update to EX 1.2 and EX 1.3. EX is a nifty and fast way of executing .SUB files, (uses ram as the SUB file buffer rather than spreading it out on disk). EX also allows batch entry of a series of commands which it stores in memory for subsequent continuous execution. MBEAUT.BAS MBREM.BAS MBXREF.BAS: Several Mbasic Utilities. Mbeaut will format an Mbasic "Ascii" file to a more easily read form. Mbrem will strip Remark lines from an Mbasic file (this will speed up the program run time). Mbxref will cross-reference any variables used in the program to aid in debu%  gging or modifying. Refer to program listings for more info. SD-91.COM: This is a significant upgrade of the standard "super-directory" program that most RCP/M systems are now using as their "DIR" executor. Some options: * The directory output 47 EX14 .SUB 17 3A 4224 33 EX14 .TST 07 28 1024 8 MBEAUT .BAS 0D 5E 5632 44 MBREM .BAS 5B A5 1664 13 MBXREF .BAS 94 1D 6400 50 SD-91 .COM 94 BF 3968 31 will be echoed to a disk file. * Allows the specification of the user number. * Allows for listing of ".LBR" file members. VLIST.COM: provides for varying the speed of file display on the CRT. This is useful because you can skip past the unwantedSD-91 .DOC 1B 3E 16256 127 SD-91 .INF E8 51 2176 17 SD-91 .UPD 81 FC 7168 56 VLIST .COM A3 C4 1280 10 VLIST .DOC E5 F8 1280 10 XTYPE .COM 00 33 8960 70 XTYP parts of readable files such as .DOC files, and slow down to a comfortable reading speed when desired. XTYPE.COM: will list standard or "Squeezed" files on the screen. ********** AQM files are squeezed assembly language filesE .DOC 56 46 256 2 IST .COM A3 C4 1280 10 VLIST .DOC E5 F8 1280 10 XTYPE .COM 00 33 8960 70 XTYP. They may be unsqueezed using UNSQUEEZE utilities found on FOG/UTL.003, 004, 014, and 031. First Osborne Group Utility Disk Library Prepared by Jim Wack, November 1984  031. First Osborne ----CHEK--------ver 1.0-------02/02/83---- FILE CRC CHARS RECORDS -FOG/UTL.055 00 00 0 0 /UTL#055.DOC 12 1B 2048 16 EX14 .COM C9 29 2560 20 EX14 .DOC 60 33 6016 &  '