IMD 1.16: 28/05/2007 17:03:57 -FOG/UTL037         -FOG/UTL037/UTL#037DOC1&*+,AUTOBOOTBAS DEXSUB AQM!DEXSUB COMDISK72 COM DISK72 DOC DRI-UTILDOCEX14 COMEX14 DOC/EX14 TSTFILEPRINBAS5 FILEPRINDOC'(INDEX COM INDEX DOCXOCLOCK COM$OCLOCK DOC%PAUSE COMPAUSWAITAQM&#SEEP AQM"SEEP COMSORTDIR COM SORTDIR DOCUNPRO COMXERA COM)/UTL#037CRC -a:The first line of this file was lostb TO BE THE UNSOLVABLE PROBLEM. I NEEDED AN ORDERLY WAY TOXb EXIT A COMPILED MBASIC-80 PROGRAM AUTO-BOOT AN ASSEMBLYb MENU PROGRAM. AFTER DIGGING THROUGH THE DIGITAL RESEARCHb MANUALS THIS ROUTINE WAS CONCEIVED AND DEBUGGED. A SOME-c WHAT SIMILAR PROBLEM AND SOLUTION WAS WRITTEN UP IN THE:c$ JANUARY 1982 DR. DOBBS JOURNAL.@c.Fc8LcBucL *** BOOTLOAD MAIN MENU PROGRAM ***cV:Revised 12/83 by Jim Woolley, FOG Disk Librarian  c`:cj NCOM% :Number of command linesdt COM$(NCOM%) :Command line stringsDd~ , :Make A default disk drive; delete if not desiredyd "O",,"A:$$$.SUB" :CREATE FAKE SUBMIT FILEd N% NCOM%d COM$(N%) :Read command line stringsd N%d N%NCOM%   :Must reverse order in submit file)eA$((COM$(N%)))COM$(N%)()"$":e N% ke (A$): A$A$(): :Fill sectore #,A$; :LOAD COMMAND IN FILEe N%e # :C!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|\LOSE ITe :DO WARM BOOTee e#f UPON RETURN TO CP/M THE FAKE SUBMIT FILE "$$$.SUB" WILL BE[f( EXECUTED AS IF IT HAD BEEN CREATED BY SUBMIT.COM.f2:Note SUBMIT.COM need not be in your disk drivef<:fF 5: :Number of<%!]&6.#e&6$z*4!"4\%*46"6}|q2&2'2(28!"2*;"9"= „2u| > 2O:&yʯ;A^$2) O:8yuNu͒:; ?|$%.ʘ#ʓ<ʪ> command lines which followfP:fZ ";THIS IS FIRST COMMAND LINE"gd "XDIR"gn "B:"gx "A:XDIR"@g ";THIS IS LAST COMMAND LINE"ollowfP:fZ ";THIS IS FIRST COMMAND LINE"gd "XDIR"gn "B:"gx "A:XDIR"@g ";THIS IS Lù>ù>ù>ù> > 2)u!A0> 2*h> ~!)w¹O:(yʹ:&yʹ#!):8=28ʏ jw:8ʉ> > ~> ~>ù>!(£w>ù>2)!&u2&2'ù>2)!'u2'2&ù*6}|ʉw+*###>E#>X#>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 aret 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.; ; EX14.TST - TEST EX FUNCTIONS ; ; ; TEST RECURSION PREVENTION ; EX14 ; ; TEST XSUB PRESENT ; XSUB ; ; TEST IMMEDIATE MODE ; ^ ; ; TEST $^? WAIT FOR CARRIAGE RETURN ; ^ 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 an...^?^> ; ; 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 PRINnd 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 thT 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 $$ ; $^$|e 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 using$$ ; ; 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 ; ^:    !*{|B!}o|g!}o|g 9   !Ͱ :=2[F ʉY Y! > w#ª>w#´w  =(,UNPROTECT MBASIC=*,)WRITTEN BY Barry B. Brey=,,copywrite 1982( $ )WHICH MBASIC FILE? ($=6 $) NOT FOUND!($=6 )DO YOU WISH TO UNPROTECT ANOTHER (Y/N)? ($=6 )THIS FILE IS NOT PROTECTED!$e&X4# J;xn{/w#w  =(,UNPOTECT MBASIC=*,)WRITTEN BY Barry 1 2   `  j *  " * Z *  " " * Z !" ͪ * ~@͹ :( k f >1͹ 0͹ >:͹ > ͹ #~͹ #x>.͹ ~͹ #ˆ" > ͹ >:͹ > ͹ BCxDʗF  LʧPʨRʀVNX`W͚ * " ?* * Z ?ͪ  List End!" ?*  Z Jͪ List Beginning*  " ͪ <- * " H: _ ͪ *   1 ͪ New filename: *   ! 6# !+ N# i&6  ڡ .w#  .! "~1 :2 W:\ <2\͚ :] >:e >! ] 1 2h2|\<ªͪ ++ Unable to find file(s) ++`ͪ ++ Drive/User Entry Error ++1 ͪ New drive/user: :) 2( :\ =_> 2]2eͪ !,  *   :+  .w#! <  !  G>w# : 2  !  1 ! <  G:. 0~x2) :, A~<2\:) _ ͪ DISK7 -- File Manipulation Program -- 04/01/83 B - Backup to previous file | C - Copy to another drive/user D - Delete file | F " * Z  1 " Z * Z ͪ ++ List Empty ++`ͪ cancels, turns up one line, other keys page screen. >2 2 >î2 >2 % ! <  <ͪ ++ Unable to Open File ++2  !- Forward to next file L - Log-in new drive/user | M - Menu display P - Print file to List | R - Rename file V - View file on Console | X - Exit to CP/M !" =ƀo&:\w*  1 " \<°* " "  Z 9!"  " * * ~_: O: 0 #{ : <2 د2 ͪ [more...] ͪ r>2 á!" % ! < 2 !!  1  <ͪ ++ Unable to Open Source ++ͪ To drive/user: :\2 G: ( :) G:( ( ͪ ++   Drives or Users Must Be Different ++?F   Copy exists, erase? (Y/N): Y  <£ ͪ ++ Destination Directory Full ++*+* Z Ҳ x ͪ ++ No Memory for Copy Buffer ++ͪ ---> File being copied i`" 2 !" * " *  b * N1 #; * " * #" * Z ! g >2 * " * |ʱ +" * "  m ͪ ++ Write Error ++:   < ͪ ++ Destination Close Error ++* " !" ! <  <ʆ 2  P !N1 #%  * yO}o|gJ |g}o" :( _ * * Z † ͪ ---> Copy CRC verifiedͪ ++ Error on CRC compare ++~͹ #~« _a{_!+ Fxʡ#~ w 6 #   ʡ  _# =# :# ;# <# ># 7*   ~#1 6#> _A z{#` Nwy#j  ڀ  |v {0͹ <2\@2 ##~2 #~2 ##^#V" * # W+} z  i`:  )= v ͪ k  ; title 'disk7 -- file manipulation program' as of 04/01/83 ; copyright (c) 1983 by frank gaude' ; all rights reserved ; 'disk7' is based on common ideas presented in 'clean', 'wash', and 'sweep', ; written by ward christensen, michael karas, andbytes free on drive : ??????????? ڀ  |v {0͹ <2\@2 ##~2 #~2 ##^#V" * # W+} z  i`:  )= v ͪ k  robert fisher, respectively. ; existence of these programs generated the impetus for writing 'disk7'. ; a full single-screen menu is provided after entering 'disk' followed by ; carriage return. wildcard filenames are permitted. disk *.asm shows on  ly ; 'asm' files on current drive. any key other than the eleven command keys ; causes the menu to reappear. full error trapping and command cancellation ; recovery is provided. display is circular, single-file columnar, with crt ; console cursor moonveniently ; added as a subroutine to other application programs that require file ; manipulation without returning to the cp/m operating system. 'disk7' loads ; fast and copies files at near theoretical speed. the menu makes operation ; essentiallyved 'forward' with or and 'reverse' with ; 'b'. remaining drive storage in kilobytes is automatically displayed when- ; ever new disks are logged-in or menu recalled. 'disk7.com' occupies 3.2k ; bytes. ; major command functions of  self-documenting. if a command is entered but no other entry ; has been made and execution has not begun, cancellation occurs by entering ; a . ; only set-up might be to 'hot-patch' the maximum allowed drive to be ; logged-in or copied to. 'disk7' are: ; c - copy file to another drive/user with automatic 'crc' verification. ; format is --> to drive/user: d[nn] where 'd' is drive and ; 'n' is optional user area. (system reset occurs for disk change.) ; d the address in the 'com' file is 0244h for setting ; the drive. a '01' allows only the 'a' drive to be used; a '02', up to the ; 'b'; a '03', the 'c', etc. use 'ddt' to set location 0244h to the highest ; drive letter in system. the file is presentl - delete file from disk, prompt for certainty. ; l - log-in new drive/user for display and reset system for disk changes. ; format is same as 'c' for copy. ; p - print a file to cp/m list device (printer), any keypress cancels. ; ry set to use up to 'c' drive. ; disk7 works with cp/m 2.2 only, with 24k or more of ram. the copy function ; is faster with large amounts of ram. (a 'tag' multi-file copy function is ; planned as a future enhancement.) frank gaude' 10925 stonebr - rename a file on current drive, cp/m convention names permitted. ; v - view a file on console, with pagination and single-line turn-up. ; x - exit to cp/m ccp without rebooting. ; 'disk7' is an alternative to 'pip' and 'sweep'. it can be cook drive los altos hills, ca 94022 telephone: 415/941-2219  large amounts of ram. (a 'tag' multi-file copy function is ; planned as a future enhancement.) frank gaude' 10925 stonebr  # ~-ʏ>2 > y ͘~ /_*> # + 4# ͟ { 2W4# ͟ {2L >?2 2 9 Ϳ  Y 2  !;# ¿2       #~+:%~Ϳ A2 ## ʸ~*3# nø > ͘ ~Ϳ .n*c>?͘# ʸ~.nU# ʸB~.­# ʸ~*ʸ > ͘ ~Ϳ *Ÿ>?͘ø# ʸŽø   :WG<* " !:K&>,&"8 :K}!= = * " ! ": 2H :?5 : K:?R:H R<=_ ͂o*:  ":  ͂bƀ_: ʜ:L :Oª! ~*: 6# ~# ¶6* #" :S! 6- >?͘͘  ƀo&"D 2S }-##F#N#~#^#VA*..21 x20 y2/  O2. #"4 g)]", ! ": * }R+*: 6+6+~Ě*:  ": sO:1 ! ¨*:  N#F r+s*:  6 * "> *: *> }G+">  =# ! V:1 =ß INDEX Version 3.0, Copyright (C) 1981, F. J. Greeb $1RPFBSTW=4V7MsUTH!< Ϳ ʁ q ###"< ^#V*< ~/w˜!9"F 1  !~ʸO#~ # ʸùy%~/ # ʸ~g!# ʸ~/ ʹ4!^#V:1  !! = N r+s*: 6* +" ! *:  6** )))))@ "2 * * "I " "> *2   ˜*> }+"> ʞs#r# * }+}"> "B *2 "@ 2K *@ ^#V#"@ ~#fo *@ ^#V++Fr+Ns##q#p2K # *> +"> }¼:  K *B +}"> "B ²!"6 * "> !  ~*2S*> }+"> X~*H6 #6 #6 ###6K'* "> ! "@ *@ ~½*> }+"> *@ ^6 #V6 +++:0 OCzW{_ Ž:/ =ʢ:. ʱ)å*6 "6 *@  "@ d2K :K >0>0 <0 :K >02K x/Gy/O *  *I  *6  : o:S^y *D  ~# L > ͘o: i:H <=A2 _P*4 +|g}o |#DM!Қ • G:. ʴ)ê|/g}/o#*,  :G ̈́ * ̈́ *8 * _}2>    (xsub deactivated; ^P turned off if on)$62099 :070130006966206F6E2924AF :0000000000   The two short utility programs in this library were sent to me by Digital Research, Inc. I have obtained their permission to place them on the rcpm networks since DRI has released them to the public domain. They are very useful to me, and I hope that they will prove the same to you. SEEP.ASM is a utility to toggle ^P inside submit files. DEXSUB.ASM cancels xsub in a submit file to allow console entry. Both programs are well documented with comments. Mike Blackwell 09/16/82  ̈́ 2@ *2 ##"2 ++^#V* } +" k :K8  k *8 :@ <2@  ̈́ :@ O:> e e +) :Cv ^#v :Cʏ $_Ï ~ /0:?0W{_# ¡ a{  :C  ̈́ :H _*F INVALID FILE NAME $INVALID OPTION IGNORED $ $FILE ERROR DURING MODIFY $MODIFY FILE, CONFIRM (Y/N)? $ DIRECTORY - DRIVE $ FILES ( ENTRIES) K USED K FREE $ $W INDEX COMID FILE NAME   $I???????????? $ FILES ( ENTRIES) K USED K FREE $ $W INDEX COMID FILE NAMEz compare ;compare next byte if not finished ;else loop for next byte error: mvi c,pstr ;print error message lxi d,errormsg ; jmp bdos ;return to CCP from BDOS ok: mvi l,listcp ;listcp page offset mvi a,1 ;toggle ^P byte on or off sub m urned on ; ; BEFORE executing xsub. To turn off ^P in a submit file in which xsub is ; ; active, execute a program that deactivates xsub, such as the DEXSUB program; ; which is listed following this program. ; v[PAUSWAIT.ASMW  "!#$&%')(*,+-/.10234657o89:;<=>@?CAD; Doug Huskey & Dave Brown II ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; org 0100h ;stay above base page bdos equ 5h ;BDOS jump instruction bdosa equ bdos+1 ;BDOS BEGFHJIKLMONPRSTQUV,&.W98:V׼ZoG+}wXąB'%_kUFuzsY}-<fۮU;8L]>p+q:ywc`p;]O*GlgƹT#entry address pstr equ 9 ;print string function testoff equ 2feh ;offest for verification listcp equ 0dh ;^P offset in page mvic equ 3eh ;MVI C,x instruction cr equ 0dh ;carriage return lf equ 0ah ;line feed lhld bdosa ;pick up address of w|Ɨ.vBw1$.QPllɿT?SZs tEʗ]UӨLz"ڻ;rOQ\ ,&*GUWjN7R?љ)V|_ nqȂ9?WksשFCFH%N zs{$.~띢{_UWzm;M ls1BDOS lxi d,testoff ;offset of ^P page dad d ;HL = compare area in BDOS lxi d,string ;DE = compare string compare: ldax d ;is character a 0? ora a ; jz ok ;yes, we're done cmp m ;is BDOS same as string? inx h ;next byte inx d ; j૜kWjrk^zѻw*>M]*G;ۉMy8,jsr]],Mv8w{'Sg#vhÑgyG*kX L4l$JKһw*>R|:G10'WQ*k&a .YɁ,tIӫv^q!.GrNyHuzF\%K剁9Q븑ב]6ЦHDaSP[_ nqKi8n12Ww_w?Ee󅭚bN&s+ʀvF^cG|v2 hg^ayM1da'Q,; a;5 5;ȲL#^c ;5 ,黣/^R  ]*bbKe]|^T渐w&>wFw]|^T؜r\H ,k^BTK8<9.$ݱ#V1]PT kb_uzqlNi)j Džb˿6ywg=c^՞uiv_> .@K)#ƿ;Ye߹m 4`I|t'+Ͻ1z[1O#}QSw.61G  (^P turned on)$ (^P turned off)$ Unable to find BDOS$>14735 :10013000010E09C305000D0A285E50207475726E09 :100140006564206F6E29240D0A285E502074757234 :100150006E6564206F666629240D0A  _Jm͌%){_ `i)3 .y2wO:wGPG Ix2x:wOxgG \xɷ# *+++_ c ;0 š>$0¸ ­ ů))# *]"p!"r"t*p|g}o"p*]+}o|g"l!"j*j"h*h*p"nVBB͋*p*h}o|g"hBB*j#"j*l͹ *r#"r*h)))))!"d*n)))))!"f#*t#"t*d*f Fwx# ›!)Ҳ¬|} Bad drive.$ Read/Write Error!$ Loading directory track.$ Sor1m::A#m2Um>2}:U_"X~2[##~2v###^#V#^#V#F#N#"]'#"{*]|g}o|g}o####"_:UO>r^#V"V*_:Z_*X ~#fo"a!>$rK*V>0r>!r*a>r>'r:[*a#"a:Z_ x¬ting directory.$ Writing directory track.$ Disk Statistics Number of compares : $ Number of exchanges: $ Possible entries : $ Active entries : $ Deleted entries : $ User areas active : $ Disk space used : $ Disk space free : $ mm*_:Z_*X ~#fo"a!>$rK*V>0r>!r*a>r>*r:[y*a#"a:Z_ x++m*r͌Vm*t͌nm*]"p͌m!~ *p+"p}¼͌m͌m*]"p!~Percent full : $ Sortdir Version 3.0 Alpha One Micro-Consulting Ltd. $ : $ Active entries : $ Deleted entries : $ User areas active : $ Disk space used : $ Disk space free : $ O͌ ^ *p+"p}*{:w/_VO z^gF:vPYʂ)*{)"{:}'2}=j"y!zʓ#É*{{_zW:x/o&#m͌Km͌K`i###*{y/Ox/G {   SORTDIR - Version 3.0 Dave Rand 10232-160 Street Edmonton, Alberta Canada SORTDIR is intended as a utility to ease the use of any CP/M based system. It simply places the directory in alphabetical order, and places all thDisk Statistics Number of compares : 1793 <---- How many compares were needed Number of exchanges: 0 <---- How many exchanges were needed Possible entries : 256 <---- Maximum # of directory entries Active entries : 112 <---- e 'deleted' entries at the end of the directory. Unlike SAPX, SORTDIR does not delete zero length files. As I label my user areas, with zero length files, it would obviously not be beneficial to destroy the labels just to have the directory in ordNumber currently active Deleted entries : 144 <---- Number available User areas active : 0 1 5 15 <---- User areas 'in use' Disk space used : 894K <---- Used space (all user areas) Disk space free : 92K <---- Freeer. Having the directory in alpha order has a number of side effects: programs like SD, DD and the like operate faster, since they do not have preform a sort themselves; MLIST, TYPE-15 and other multiple- file handling programs enjoy the benefit  space Percent full : 89% <---- Pecentage occupation of disk In all, SORTDIR is a fast, useful tool for maintaining directories! of having the files displayed in alpha order when a wildcard filespec is given; it becomes easier to locate a directory entry when using DU, or doing any operations on the directory itself. SORTDIR gives a report of some useful information, as is!9"T1v%  *TPausing, for any keyboard entry to continue: $066FE :100130006F7220616E79206B6579626F61726420E5 :10014000656E74727920746F20636F6E74696E755A :04015000653A2024C8 :00010000F seen below. A0>sortdir b: Sortdir Version 3.0 Alpha One Micro-Consulting Ltd. Loading directory track. Sorting directory. <---- This step seldom takes more than Writing directory track. one second. b equ base+5ch;transient file control block base address ; rdcon equ 1 ;read console character wrcbuf equ 9 ;write buffer contents to console const equ 11 ;console (data available) status ; lf equ 00ah ;(^j) line feed cr equ 00dh ;(^m) carriage retu  rn bel equ 007h ;(^g) bell - human attention required if mpmprl ;if MP/M program relocatable... org base endif ;end if... ; if not mpmprl ;if not MP/M program relocatable... org base+100h endif ;end if... if pause ;if "pause" start: ointer lxi d,msg1 ;display "Waiting for any keyboard entry, or timeout" mvi c,wrcbuf;write console buffer function call bdos ;let CP/M do the work... lda tfcb+1 ;get number of ten second delays required sui '0' ;make hex value from ASCII value lxi h,0 ;save "old" CP/M stack pointer dad sp shld oldstk lxi sp,stack;make "new" stack pointer lxi d,msg1 ;display "Pausing, for any keyboard entry to continue" mvi c,wrcbuf;write console buffer function call bdos ;let CP/M do the work... ; q'>%jXZwWO丐wN 64`5Bb`1Xv>Z'c |^ҿJ}ҧ&Dž`wֳ؜r\H 1X$W/K{Up;q!1XԌk7.vBw`;;c#wDw|Nn#1Xڌnz?ݾ(N b'/%˿1Xڦb?;cAe~*뽺No`w&3NQ9.$f~_uzo 64`5ointer sphl ;and restore for... ret ;return to CP/M endif ;end if "pause" ; if pause and upper ;if uppercase only terminal... MSG1: DB BEL,'PAUSING, FOR ANY KEYBOARD ENTRY TO CONTINUE: $' endif ;end if... ; if pause and not upper ;if notȝL ,kG",Ӎ5 ,黣/^R Jp@W9לAkY>G{f_Gj׮|'G`sJflNQ9.$5`#wN(,Ӎ5QdYwG$_8jCu+YVx'mQ槒Qޫ uppercase only terminal... msg1: db bel,'Pausing, for any keyboard entry to continue: $' endif ;end if... if not pause ;if not "pause" assembly start: lxi h,0 ;save "old" CP/M stack pointer dad sp shld oldstk lxi sp,stack;make "new" stack pvpz V^`wT.b.XvXFi,4+Wv|e~;v9~j>L V6X< ?O.@O F_JƗA*_~帐,g(cARpʤ_#O.inDFJkuNNr}L Ff+ַVuS䑹8,5lk@oĿ"lըOSb04klk  U<28eհUw}ݡnz~nQVk@FتQ].jWK̞W4#/]O`k3u`sPl`d|XTޫ] *foLznU!U縐X ت,4v萊stST&=b8YF_JV&=X9C)*4V Denver, Colorado 80227 Copyright (C) 1981 INDEX is a CP/M (R) utility program combining the features of DIR and STAT. It provides an alphabetical listing of the disk directory, spaced in col9T@+C)*_i ʏ bAc: [59.$[rasTﯷ縐,4+꺡3V]'eNQ&L V6X< ?O.@O F_JƗA*_~帐l-f=(nDCw$l}1XSqAc |j>ʾʤ`٪ƥOظ4뽞O%vpz 64`umns across the screen, and may include the file size for each entry. The total number of files, the total number of directory entries used, the disk space used, and the disk space remaining is also reported. The general form of the command is 5Bb`1Xv>jy)"M;c֪_J4}Lz~Uަڌ܍` MmũDӧlNi)j Džb|St> 4b(ek ʾp+nk/N%>`sJflNQ9.$5`磖Gk@2#w2zN'?DžP&=%˒Kf?K.:茥IϗKd!9Ss\H ,kHfWa3Gގ`  INDEX {/OPTIONS} {DRIVE:}{FILENAME}{.}{FILETYPE} where all of the parameters in the braces are optional. Wild card characters (* and ?) can be includet in the file name designations. The following example commands, and their results, i[[.ظ4z)]~cܭ1BJ m V6EcAO b'/%˿Ҡ^/܎`r\H ;5cڍН1X6jظ4k{{dtѝNߨk7`c/5KI}+ѝ@ƥX-bl5U2J/*1Xݞe]e_TclV+bK X$_)S&llustrate the wild character capability of the program. INDEX Directory of all files on current drive INDEX B: Directory of all files on drive B INDEX *.COM Directory of all COM f.MT0 .PO2 .OP  INDEX PROGRAM Version 3.0 by F. J. Greeb 1915 S. Cape Way iles on drive B INDEX A??.* Directory of all three letter or less file names begining with the letter A on the current drive INDEX B:A*.* Directory o  f all files on drive B which begin with the letter A, regardless of the file name length. OPTIONS - The options which are allowed are: /R Resets the disk system and your disks have a disk name file with a dash as the first character, the disk name may be used as the title by using a /T- option. This form of the title optio before performing the directory search. Use this option if you change disks without doing a Control C. /P Directs the output to the printer rather than to the consn causes the INDEX program to read the disk name and substitute it for the normal title. /B Sets the brief mode. The size reporting for each individual file is suppressed. The total diskole. /F Outputs a form feed character (Control L) before printing the directory (console or printer). /T Allows a title to be input (immediately following the T) whic space used is still reported. This mode is useful for large directories, since more columns will fit on the screen. /Wn Set the output width to n, where n is a numbh will replace the DRIVE designator on the directory output. The maximum title length is 20 characters, and no spaces may be contained in the input title. To include spaces in the outpuer in the range of 32 to 255. This command can be used to adjust the program for screens smaller than the nominal value of 80, or to set the width to a larger numbt title, use the underline character. The underline will be translated to a space before the title is .HE INDEX101.DOC PAGE # .OP printed. If you are using the Master Catalog Program er for directories sent to the printer. The number of columns is automatically adjusted to fit the width you specify. /S Include system files in the directory listing    (CP/M Version 2 only). System files are normally suppressed from the directory. This option allows you to display them. /M Modify the program to reset any of the above  to 15 (CP/M Version 2 only). /H Print a short help message on the console, which lists all of the available options. The options may be chained together by separating then with  options to the default value. For example, INDEX /B/M will modify the program so that the brief mode is the normal state. Including the /B command will then cause the expanded oua slash, which is used as the option designator character. Chained options may appear in any sequence and may also include a space as a separator if desired. There must be at least one space following the last option and any drive or file designator tput form to be used. /T-/M will cause the title to default to the disk name. If no disk name is found, the normal DRIVE A title will be used. You can not set up which is included. For example, the command INDEX /R/P /F/TSYSTEM_FILES B:*.COM will reset the disk system, use a title of SYSTEM FILES, and output the directory of all COM files on drive B to the printer, with a leading form feedany other title as the default value. See the note below concerning this option. /V Reports the version number for the INDEX program you are using. Please include . A little experimentation with the options and file name wild card characters will give a better understanding of their operation. Note that all inputs may be in either lower or upper case, and are translated internally to upper case only, in keepingthis version number when reporting any bugs or suggested improvements to the program. /Un Lists the directory for user number n, where n is a number in the range of 0 with the CP/M format. This does not include the titles, which may be output in upper or lower case. Error Messages There are three error messages which may be output by the program. These are:   INVALID FILE NAME - Indicates that the file name specified is not a valid CP/M file name. This usually means that it is too long, although other problems can cause this error message to appear. UNRECOGNIZED OPTION IGNORED - Indicates that  a completely different program, it is possible that it will be destroyed. The modify command performs a check for the correct version number and a partial contents comparison before allowing the modify operation to be completed, but this is not complean option has been included in the command string that the program does not recognize. The error is ignored and all other options are still in effect. FILE ERROR DURING MODIFY - Indicates that the modify option was not completed successfultely foolproof. The modify command asks for confirmation before updating the program so if you input the modify option by mistake you can abort it before any harm is done. The modify command can be used to set up a default value for performance ly. This can occur if the file INDEX.COM is not found on the default disk, if the program and disk version numbers do not match, or if a disk write error occurs. Modify Option A word of caution if you use the of a series of runs, and then be used again to restore the program to its original state. For example, if you want to list a series of directories on the printer, with a leading form feed for each printout, the command INDEX /P/F/R/M ca Modify option. This option requires that the INDEX.COM program is on the default disk. If you are logged on to Drive A, and you issue the command B:INDEX /B/M to set the default to the brief mode, the program will search for a program named INDEX.COMn be used to set up the desired default mode. You can then list all of the disks, assuming you are logged on to Drive A, using the command INDEX B: The new default values eliminate the need to list the options separately for each disk th on Drive A. If you do not have a second copy of the program on Drive A, an error will be reported and no serious consequences will result. However, if there is a file named INDEX.COM on Drive A, and it is not the same as the program on Drive B, or isat you put in the B drive. Including the reset option allows the disk space remaining to be reported correctly, without having to input a Control C after each disk change. After you have printed all of the desired directories, the program output   can be restored to the console by using the command INDEX /P/M The /P option toggles the printer flag, and since the current default was for printer output, this returns the default to the console. Also, since the /F and /R options wer version number as reported by the /V option, and as much detail about the system configuration and disk status as possible. There is one known case where file sizes may not be reported correctly. If you use the random write capability of CP/M Ve not reset, they are still in effect as the default mode. Using this technique, you can set up any available options that you desire as the default mode. Note that only options preceeding the /M option in the command line will be modified. A command ersion 2, and write a file with holes (such as initially writing only record 10 and record 2356), the file size reported may not be correct. Since this type of file occurs only rarely (most random files are initially created sequentially) the extra codof the form INDEX /B/M/P will send a brief mode directory to the printer, but only the brief mode will be reset as the default value. Since the /P option is after the /M option, the printer will be used for this run only, rather than bece necessary to assure correct size reporting for them has not been included in the program. If you have a file of this type, the CP/M STAT command can be used to verify the file size. CP/M is a registered trademark of Digital Research. oming the default mode. Operating Restrictions The program is configured in a general manner and should work with any version of CP/M, with mini-disks, 8 inch disks, or even hard disks. The program has been tested with CP/M Version 1.4 and 2.2 using both single and double density 8 inch disks, and with Version 2.2 using mini disks and hard disks. Please report any errors or bugs which are detected to the author at the address listed above, including the INDEX   BASE 1d FILE$(),DISKNAME$(K)e COUNT:COMMA$",":SEMI$";":ALLFLAG7e CPI$()"E" :Set printer to 12 char/inchle LPI$()"B" :Set printer to 8 lines/inche NORM$()"N"()"A" :Select 10 cpi and 6 lpie:Above settings for NEC & C.Itoh modified to following for EpsonfCPI$() :Set compressed6fLPI$()"0" :Set 8 lpikfNORM$()()"2" :Set 10 cpi and 6 lpiyf ()f );"*** FILE PRINTER ***"f" ::  )"Dea : ***** FILEPRIN.BAS *****b : This program reads MAST.CAT as created by>b : CAT.COM (or similar) and gives you the optionrb( : of listing out (3 across) the files underb2 : any given disk name.b< :bF : Created byveloped by Gary W. Addison"g, :"To use this program you must have a copy of"4g6 "MAST.CAT as generated by CAT.COM or similar"jg@ "software. You may put the disk containing it"gJ "in either drive."gT :::g^  : **** Read MAST Gary AddisonbP : 2205 W. Concord RoadbZ : Muncie, IN 47304cd :)cn : Your comments appreciated2cx :lc : Contains a POKE statement specific to Osborne 1c : Should work otherwise with Microsoft Basic-80c :.CAT in arraygh  : **** Find disk nameshr  : **** Sort names by disk number5h|  : **** Print disk menuah :"Enter the number corresponding to"h "the disk directory you want to display."h :"To review all files c:Revised by Jim Woolley, FOG Disk Librarian, 1/84d:See lines 261-264 for Epson mods.Dd:Following mods. for screen/printer redirectionldADDR%:CON%(ADDR%):LST%CON%@d : ***** MAIN PROGRAM SECTION *****d pd enter <999>";DISKNUMhALLFLAGi DISKNUM ALLFLAG:DISKNUM: +i DISKNUM DISKNUMDISKCOUNT i :"Do you output on the creen": );"

rinter";: )"abel";: PFLAG$i ();i PFLAG: (PFLAG$,)"P  " (PFLAG$,)"p" PFLAG j LABEL: (PFLAG$,)"L" (PFLAG$,)"l" LABELj PFLAG LABEL "Press enter when the printer is ready";ANYTHING$: ADDR%,LST%: : Poke statement routes output to printerj  : **** Print oCHECK COUNTn (FILE$(CHECK),)"++" fo  FLAG1(,FILE$(CHECK),COMMA$)/o* FLAG2(FLAG1,FILE$(CHECK),SEMI$)Do4 FLAG2 Ro> DISKNAME$(DISKCOUNT)(FILE$(CHECK),FLAG1,FLAG2FLAG1)oH \oR DISKNAME$(DISKCOUNT)(Fut the appropriate filesj :"Do you want to see another directory";ANS$*k (ANS$,)"Y" (ANS$,)"y" |1k qk : ***** SUBROUTINE TO READ IN FILES FROM MAST.CAT *****k "Which drive contains the file MAST.CAT (A or B)";DRIVEILE$(CHECK),(FILE$(CHECK))FLAG1)o\ DISKCOUNTDISKCOUNTpf CHECK: DISKCOUNT  : p,pp CHECK COUNTRpz (FILE$(CHECK),)"[[" vp FLAG1(,FILE$(CHECK),COMMA$)p FLAG2(FLAG1,FILE$(CHECK),SEMI$)p FLAG2 $k DRIVE$"A" DRIVE$"a" MASTCAT$"A:MAST.CAT": *l DRIVE$"B" DRIVE$"b" MASTCAT$"B:MAST.CAT": Ol :"Choose either A or B": el "I",,MASTCAT$pl ::l$  )"Loading MAST.CAT --- Please wait."l. () p DISKNAME$(DISKCOUNT)(FILE$(CHECK),FLAG1,FLAG2FLAG1)p @q DISKNAME$(DISKCOUNT)(FILE$(CHECK),(FILE$(CHECK))FLAG1)[q DISKCOUNTDISKCOUNThq CHECKq DISKCOUNTDISKCOUNT:q : ***** SUBROUTINE TO SORT DISKNA:"No files are cataloged":l8 #,IGNORE$ : **** FILTER IGNORE FILES$mB (IGNORE$,)")" L : .7mL () :JmV COUNTCOUNTcm` #,FILE$(COUNT)nmj Lm : ***** SUBROUTINE TO FIND DISKNAMES ******m  )MES BY NUMBERq  )"Sorting names . . .": P DISKCOUNT r JP DISKCOUNTUr (DISKNAME$(P),)(DISKNAME$(J),) DISKNAME$(P),DISKNAME$(J)`r J,Pgr r : ***** SUBROUTINE TO PRINT MENU OF DISKNAMESr X:N: "Finding disk names . . ":DISKCOUNT: CHECK COUNT n (FILE$(CHECK),)"-" 2n FLAG(,FILE$(CHECK),COMMA$) dn DISKNAME$(DISKCOUNT)(FILE$(CHECK),,FLAG)n DISKCOUNTDISKCOUNTn CHECK: DISKCOUNT  :  n  ();r NDISKCOUNT r X N;);DISKNAME$(N);:X: +s X );N;);DISKNAME$(N);:X: Ws X %);N;*);DISKNAME$(N):Xs NDISKCOUNT : : NN: s~ : ***** SUBROUTINE TO PRINTOUT LIST OF   FILES ON DISKt CHECK:X:N:LINECOUNT:COUNTER:AMOUNT:AMOUNTFLAG: PFLAG NN : NN^t LABEL  CPI$;LPI$;"Disk Name >>> "DISKNAME$(DISKNUM): xt PFLAG NORM$;t ::: NN);"Disk Name >>> "DISKNAME$(DISKNUM):ECOUNTLINECOUNT: x X %NN);LE$;" ";RI$:Xy CHECKCHECK: CHECK COUNT Dy X  : :LINECOUNTLINECOUNTy LABEL LINECOUNT LINECOUNTLINECOUNT:: y LABEL "Total >>>"COUNTER"files:t LINECOUNT  : FLAG1(,FILE$(CHECK),COMMA$): 'u "Not enough label space for all files.": >>"COUNTER"files";z NNN: PFLAG NNNNNz LABEL NNN]z NNN);"Diskspace >>> ";: AMOUNTFLAG "Unknown": nz AMOUNT"K"z ALLFLAG :DISKNUMDISKNUM : z DISKNUMDIS TEMPNAME$(FILE$(CHECK),FLAG1,FLAG2FLAG1)v TEMPNAME$DISKNAME$(DISKNUM)  : 8v TITLE$(FILE$(CHECK),FLAG1)Vv (TITLE$,)"-" uv (TITLE$,)"+" (v  N$(TITLE$,N,)v N$"+" NN:  v AKCOUNT :  : z LABEL  : : { PFLAG:LABEL: ADDR%,CON%:*{f : ***** ERROR TRAP ROUTINE<{p 5 L{z  e,[{ { :"MAST.CAT is not on Drive ";DRIVE${ :"Insert a disk containing MAST.CMOUNT((TITLE$,(TITLE$)N)):AMOUNTFLAG: 6w( (TITLE$,)"[[" AMOUNT((TITLE$,(TITLE$))):AMOUNTFLAG: Qw2 FLAG3(,TITLE$,".")w< LE$(TITLE$,FLAG3):RI$(TITLE$,(TITLE$)FLAG3)wF (LE$) LE$LE$" ":AT"{  )"before continuing."{ :{ CAT is not on Drive ";DRIVE${ :"Insert a disk containing MAST.C 5 L{z  e,[{ { :"MAST.CAT is not on Drive ";DRIVE${ :"Insert a disk containing MAST.C FwP LABEL X dwZ X NN);xd COUNTERCOUNTER: X LE$;" ";RI$;:X: Pxn LABEL X );LE$;" ";RI$;:X: ~xx X NN);LE$;" ";RI$;:X: x LABEL X );LE$;" "RI$:X:LINALLFLAG=1 THEN PRINT:DISKNUM=DISKNUM+1 ELSE 5380 5370 IF DISKNUM>DISKCOUNT THEN PRINT:GOTO 5380 ELSE 5000 5380 IF LABEL <> 1 THEN PRINT:PRINT ELSE PRINT 5390 PFLAG=0:LABEL=0:POKE 58637!,21:RETURN 5990 ' ***** ERROR TRAP ROUTINE 6000 IF ERR=53 THEN 60  30 6010 POKE 58637!,21 6020 ON ERROR GOTO 0 6030 PRINT:PRINT"MAST.CAT is not on Drive ";DRIVE$ 6040 PRINT:PRINT"Insert a disk containing MAST.CAT" 6050 PRINT TAB(10)"before continuing." 6060 PRINT:PRINT 6070 RESUME 1000 40 PRINT:PRINT"Insert a disζQ XҔnEΚg<%q/B֛L -Q  ͷx #=po&S*(:2 S()SY|(+! /~⑀x ] ɰ5熧)]tsPՔE?]U~d :TO:k U~(!!¡S6nn?H-*_b/rvع .;[i$DRIVE A :$DRIVE B :$ NUMB CYC1 CYC2 CYC3 CYC4 CYC5 -------------------- ---- ---- ---- ---- ---- ----$ MOVE :$ READ :$ WRITE :$COMPLEMENT :$BIT STUCK :$ADJACENT BIT :$CHECKERBOARD :$WALK BITh$*N}h$*}l$h$*l$h$*l$h$*l$h$*l$h$*l$h$yd$*D|`$\$ `$! ! !9!P!i|O*#^#Vr+s}$## ++ Dw#w*@2!$̈́&X&A$·$2!%̈́&An&͕&͕& SELECT DRIVE  LT :$WALK BIT RT :$ADDR LINE :$RND NUMBER :$SOFT ERROR TOTALS ARE: ---------------------- DRIVE A:$ NUMB CYC1 CYC2 CYC3 CYC4 CYC5 DRIVE B:$ NUMB CYC1 CYC2 CYC3 CYC4 CYC5 ------------- ---- ---- ---- ---- ---- ---- -------- A,B $ SELECTED DRIVE IS : $!>2#!n/͏%b%:#=M%7!>2#!/͏%ҋ%:#=v%7͌*!71w$ں%!0w$ں%!.w$ں%w$ x%# %!%+7Wx%r x%>2#͌*!vDEXSUB.ASM2 " !o%$#&'()*-,0/+.1;t!ϻ ٶ#bKlǽ|g.rl71w$&!.w$:#=%7:4&:A4&Q4&AOy2 !_?(M&(wX&Y7ak&{k& _͕& > n&> n&͢&> n&ͯ&§& yn&n#f#&&i'!&̈́& $a{ '  ~$'_#'!!'& $&i'!&&n#f#$'A'_͗'ͦ'͗'ͦ'͗'ͦ'͗'ͦ'}0>02'>0]T< ښ'=kbG:'³'> x>2'0x$(#( (''#('*(#(+*(#(+dgpϿCܱBڌ]鴿[;# ={6C̀_o + 3~&1=?d{|( ik Wܽ` o1 EbK8,~W8<<,8pqtqavócs-{SH0j@́*{Y^HO}Gr}.wnO 箟ڠlL]4}VY6Ac<\?*(#(+ *(#(+*(#($(7~0?( ?( =9(7͕&|rͼ(}ͼ(> n&͢&~ͼ(͌*( y(#}a(yʍ(o},ʍ(͟&À(͟&~. ڟ(ҟ(Oyn&(#ڸ(}‘(͕&J(G(x(Ɛ'@'n&z({(7#&>(n&~&o&>)nUuH*Ňm\-$.Ep ]?O!Wr!9>M!WSr8gt!\I9aTsocڠlLY6Z&X|qE)Reu+n3# d_}^e1&;mrg׋BJHo/# YF*+dP/>Xe6-dh+Te?3 3!OUv_i Yv\SEEP.ASMK  "!#$&%('*)+,.-0/12o3547689:<=>@;B?ACFEHTY!ˇz팶:H;dl"d-c{ʼl9Xk7Wej!k"tUVA[9ʾ('N|cc|pJtʮt߲@}*_igv UY}wM1c YQe[U!ϠF}uxVY7~ac,zCpU;coW Yy",DIGJv 6_o|ȟړ4r Mb~=׎r~3zvbX|k̘$l uk8Xt&1Q<צL(L6zv(_6=@M&<|oB ŌҦޞJk>ݐ13jqugg vpϿ[!mz?IxFlBj{j8=g?עApM?uNonO kzgP,C'kSWCSG7dc\!N^ Ml6}WTB{\Bqjjh*p֎r̟$ǘWTB?"NVyN}F Y=[rv5MAt~IxfcVHcߞX﴿[ۡko ?3AC il7P:!zvVއ~a=;X|k=;ǘ8GZ igAk(zv|nOwyf}h 3۸:qBڌI2ۇ?=f2={pCL Q9Ҏr~32!>*@.0*@18'! c :! :!(02!2*@*~O#~G#>*@x0*@1c *~O#~G#>*@0*@18`:!G  *@0*@0*@0*@2>2!G:*@0*@11*@  =?ڍ׋`bYV6^?"iD?ȡKo ,qiSJTrqg=O%:xWi.d)s=Dž`}ЌAҏ^؜9G{f_Gj׾QqrҺX 5hf:{.Z(7=ҿ2]{ۍ_G?1H%C&'9Ay:xT\>ב]6ئHDASP[_ nqKi8n12Ww_w?Ee󅭚bN&s+vF_cG|v2 lg_ayM1da'Q,; `;5 5;ȲL#_c ;5(,黣/^R  ]*jy):Eet>,t WBb{% oa;nhv߅O0Kzbjh$yEsrE^GMyj]o؜r\H ,kG-1րGeGdO~ n責OxrZ̲rmʾڡ}9xuNF UʁwJsu%KeG tv2jP/pTʁwJsjuZ'݉wJso ,^?6yVyEӈn_'&^cps ?s&ʊ1iP>=8Crc`1$hGlm92R;#8Sb&~se(zo=ꃤI6y֘C-ݎ'%9-kWjrk^zѻw*>M]*G;ۉMy8,jsr]],Mv8w{'Sg#vhÑgyG*kX L4l$JKһw*>R|:G10'WQ*k&a .YɁ,tIӫv^q.GrNyHuzF\%K剁9Q븑OCLOCK Version 1.0 Copyright 1982 Michael M Rubenstein $!91!]ͧʊ*|@0$"*"| g.!5""!" *|@8.3^#VS.^#VSs1[*7R8S* #" {OFF '’( )’? :"y{Rǧq41]ɌS#{ 냤W) 9E *  ,tc |Y?Ny)P]JIێ{# ?,؜s\@ 1Xv>jy䎱u>*yd.Nq>F [5+[5G.[OCLOCK -- a simple clock counter for the Osborne 1 page 1 Copyright 1982 Michael M Rubenstein This document and the accompanying program may be distributed freely provided the copyright notice is retained and no fee is charged. OCLOڻ;r')`j5lw_w?nۇbl԰UwjԮ~nŀҬlj+kKW{uS21Xڌn@2Po8ܟF

::CݡIϿ1θ`їI7Vpʤ`<CK implements a simple counting clock on the Osborne 1. The clock consists of two bytes at location 000BH. Once the command oclock is executed, this location will be incremented every 1/60 second until the system is cold q'բC*~>ʾʤ_W¯cB3z;E:VM r\\G8-9. K.ʦnv|eIS)U)O #i Cї_ciPuznGw9. [bs Нz) [5E` jg\X:Opu;21XjqiS16. 7Guz*S;-) 9booted or the command oclock off is executed. The clock's accuracy is limited by the operating system disabling interrupts for disk i/o. Errors of 5-10% are typical during normal activity. OCLOCK uses one page in high memory. E 渀X ֠ZwHXmMb(ek6c+C)w#Píjw[q*.S4csq1A; prompt, type OCLOCK To stop the counter, type OCLOCK OFF Once the clock counter has been started, it may be reset to zero, for example, using the folsome functions from the display, but not from the total time. In particular, if exit is called, the main function will not be displayed in the profile. This bug can be fixed by inserting the line if (!q[-1]) q[-1] = 1; afterlowing MBASIC commands: POKE 12,0 : POKE 11,0 Elapsed time in seconds may be determined, for example, with the following MBASIC instruction: T = (PEEK(11) + PEEK(12)*256)*60 Since only two bytes are used for the counter, it will recycle the line for (q = LINKPT; q != -1; q = q[-3]) { in cprof.c. If this patch is made, the number of calls displayed in the profile will be the number of returns that the function made, except that func- tions which had never executed  every 18+ minutes. Doug Hurst of 29 Palms, CA, contributed XERA, which double checks confirmation before erasing one or more files. Place XERA.COM in drive A. At the A> prompt, type XERA filespec where filespec may include wildcards. Eaa return when exit was called will have a count of one. t func- tions which had never executed ed in the profile will be the number of returns that the function made, except that func- tions which had never executed ch filename satisfying filespec will be displayed with a prompt. Responding Y for yes will cause a request for reconfirmation before erasing the file. Responding N for no will leave that file undisturbed. Also, see ERAA on FOG/UTL.014. The  DISK.DOC FOG/UTL.037 First Osborne Group (FOG) Utilities Disk OCLOCK uses RAM locations 0Bh and 0Ch to store a clock counter which is incremented every 60th second. The counter is stored with thfollowing files were received from Rick Schmidt of Federal Way, Washington. AUTOBOOT will exit MBASIC and execute a series of CP/M commands built into AUTOBOOT via DATA statements. It is similar to running the CP/M utility SUBMIT. It could be "  used as a subroutine to your own MBASIC program for special effects; for example, you could terminate your program, execute the CP/M utility XDIR, then restart MBASIC. For those familiar with dBASE II, it could be used like the QUIT TO command.  Th disknam i determine b on o thes methods: 1 Firs metho i t see th "- o fil listed I filenam i MAST.CA start wit thi character i i assume t fla th disknam an i use i tha way. 2 Se FILEPRIN will identify disks listed in a library catalog called MAST.CAT created using NEWCAT found on FOG/UTL.002. It will then display files contained on requested disks, similar to a disk directory. The display may be on the screen or pricond i th abov marke doe no ap pear i look fo fil startin wit "+ sig a i th for use t sho fre spac -- +++45k.FRE Th dis nam i the picke u fro th secon par o th entry. 3 I neithe o th abov ap.h FILEPRIN.BA (1/1/83 pag # .p 10 FILEPRIN.BA Gar W Addison 220 Wes Concor Road Muncie I 47304 FILEPRI i designe t tak pears i look fo th "[[ tha start th [[45]].LF (spac left fil an pick u th dis nam fro th secon par o th entry. I th file i th for +++45k.FR o [[45]].LF appear the ar use t determin th amoun o disMAST.CA a formatte b NEWCA o FMAP/UCAT/CA an prin th director o an dis yo choos o th scree o printer Yo ma hav th printe outpu o standar 1/ b inc labe i yo prefe (ma o 2 files) men o cataloge d fre space I neithe o the appears dis spac i liste a "unknown". Th progra ha bee teste o MAST.CA entrie formatte i th followin ways: -filname.typ,dskname,nnn -filname.typ,dskname,nnn;u isks sorte b dis number i presente fo yo t choose Outpu i directe t th printe b POKEin th outpu rout fro consol t printe thu simplifyin th progra sinc th sam prin statement ca b use o th scree o printer. +++nnk.FRE,dskname.nnn +++nnk.FRE,dskname.nnn;u [[nn]].LFT,dskname.nnn;u .pa Becaus o th above i i assume tha i fil start wit "-" "+",o "[[ tha i i no vali fil bu i dis#   nam o fre spac in dicator. Th progra load th entir MAST.CA int a arra s tha i ca b searche fo files Teste wit catalo o abou 32 entries ther wa stil abou 12 o memor left Therefore th arra dimen o th screen Yo won' se i bu it'l ge yo back. I yo hav an comments pleas le m know hop yo fin thi useful. Gar Addison N.B I cas yo wan t us it t rout th outpu sionin o 75 files an 7 disk i probabl valid. Occasionally th printou wil see slow bu kee i min tha fo eac fil pas i mad throug th array usin severa strin function t selec th necessar component o th fro Basi t th printe instea o th console POK 58637,29 T rout bac t th screen POK 58637,21. Credi fo thi informatio t Crai Feied Sudden Software Honolulu HI. fil entries An fil usin th +++nnk.FR notatio wil star slo whil th progra strip of th "+ sign an determine fre space Th [[nn]].LF fre spac i no a slow. Th printe configuration ar currentl se fo a NEC-8032 printer Norma printou i initialize wit th strin i Lin 26 fo 1 character pe inc an line pe inch Label ar initialize b th value i Line 24 an 25 t 1 character pe inc an line pe inch Yo wi nee 1 i}͊͜2͓ͤ͜! "Lc͓!5<:}͛ܿ>22!w#v! "!"\\!4*!o:\w~#¸*":2:\@2* ~G#~2t chang the t confor wit you printer I yo happe t abor th progra whil i th prin al disk mod (choic <999>) an you outpu i directe t th printer yo wil nee t immediatel typ POK 58637,2 t ge outpu bac:_*#~_#.~_#2 :O!{ ^#V:Yʂyʂ;*6>2u*#"@Yʷyʷ7?u7:G*~*͓ ? $ READ$  /ONLY and SYSTEM $: $ $No - FILES NOT ERASED $ NO FILESNo $ O.K. to erase? $ READ-ONLY $$ SYSTEM $Yes $gWhinal stdcpm equ true ;true if regular CP/M (base address 0000h) altcpm equ false ;true if alternate CP/M (base address 4200h) mpmprl equ false ;true if MP/M program relocatable format fastclk equ true ;true if 4 mhz system clock ; if stdcpm ;if stan'pause' to FALSE. ; ; Additional conditional assemblies may be set-up, by ;various TRUE/FALSE configurations for 'upper' (uppercase ;only terminals), 'stdcpm' (standard CP/M), 'altcpm' ;(alternate CP/M), 'mpmprl' (MP/M program relocatanter, or labels may be produced. FILEPRIN.DOC describes the program. It has been modified to use Epson printer controls, but NEC or C. Itoh controls may be reinserted. The POKE procedure described for sreen/printer toggling was revised, also. ble), or ;'fastclk' (4 Mhz CPU system clock). ; ; When assembled as 'PAUSE', just enter PAUSE in your ;SUBMIT file...then when it's running, strike any key on ;your keyboard to continue. When assembled as 'WAIT', just ;enter WAIT 1 (for 1 AUTOBOOT and FILEPRIN are MBASIC programs. To use, place BAS files in drive A and MBASIC.COM in drive B. At the A> prompt, type B:MBASIC At the Ok prompt, type RUN "program" where program is the name of the program, which must be cap0 seconds delay) up to WAIT 9 (you ;guessed it, 90 seconds delay) in your SUBMIT file, then ;wait out the programmed delay or strike any key on your ;keyboard to continue. If 'WAIT' does not have a value ;specified (or you followed it wiitalized and surrounded by quotation marks. DEXSUB may be used to delete XSUB while executing a SUBMIT file. This will permit part of the SUBMIT file to contain automatic program input managed by XSUB, while programs run after DEXSUB will wait foth something weird), it ;defaults to a 90 second delay time... ; ; ; true equ -1 ;define true false equ not true;define false ; pause equ true ;true, if "pause" assembly ;false, if "wait" assembly upper equ false ;true if uppercase only termr interactive input from the console. A byproduct of DEXSUB is that the toggle will be turned off if originally on. SEEP may be used in a SUBMIT file to toggle on or off. DEXSUB and SEEP are described in DRI-UTIL.DOC. Th%  ese programs are also described in DRI's CP/M 2.2 Application Note 14. PAUSE may be used in a SUBMIT file to pause until any key is pressed. This might allow disks to be changed, for example, before continuing. PAUSWAIT is an assembly languageile maintenance utility similar to SWEEP found on FOG/UTL.005 and 013 and NSWEEP found on FOG/UTL.031. It is smaller than those programs, but less versatile. Place DISK72.COM in drive A. At the A> prompt, type DISK72 A help screen will di program containing options to assemble either PAUSE or WAIT, which will terminate when any key is pressed or upon timeout. WAIT may be found on FOG/UTL.021. EX14 is an update of EX12 found on FOG/UTL.015. This program may be used in place of splay available functions. Also, see DISK72.DOC. INDEX is a versatile DIR utility similar to SUPERDIR found on FOG/UTL.005. Options may be secified on the command line to reset drives for accurate free space determination, output to the printeSUBMIT. It is not even necessary to prepare a SUB file in advance, since EX14 will accept a series of commands interactively from the console. Enhancements relative to SUBMIT include repeated execution, pause for key, control characterr, add titles, and alter output width. Place INDEX.COM in drive A. At the A> prompt, type INDEX See INDEX.DOC for use of the options. The help screen option does not appear to work. SORTDIR will sort directory track entries into alphab representation, default parameters, and other features described in EX14.DOC. To run, place EX14.COM in drive A. At the A> prompt, type EX14 d:filename where filename is a file of type SUB on (optional) drive d containing a list of CP/M cetical order, placing all erased file entries at the end. It is similar to SAP found on FOG/UTL.014, except that SAP eliminates all erased file entries. Place SORTDIR in drive A. At the A> prompt, type SORTDIR d where d indicating the driommands and/or special symbols recognized by EX14. If no filename is specified, EX14 will prompt for the command list to be input interactively. EX14.TST may be renamed EX14.SUB and used to test the operation of EX14. DISK72 is a generalized fve to be sorted (A or B) must be included. See SORTDIR.DOC for further information. UNPRO will unprotect an MBASIC file saved using SAVE"filename",P. Place UNPRO.COM in drive A. At the A> prompt, type UNPRO When prompted, enter the nam&  e of the file to be unprotected as D:FILENAME, where D: (i.e., A: or B:) is the (optional) drive containing FILENAME.BAS. If D: is not included, drive A will be assumed. File type is assumed to be BAS. Input must be capitalized. Also, see MBASIC-P found on FOG/MIS.016 and UNPROTEC found on FOG/MIS.018. Squeezed assembly language AQM files may be unsqueezed using utilities found on FOG/UTL.003, 004, 014, and 031. Jim Woolley FOG Disk Librarian  March 1984 g utilities found on FOG/UTL.003, 004, 014, and 031. Jim Woolley FOG Disk Librarian  seconds! $' endif ;end if... ; if not pause ;if not "pause" assembly... msg3: db bel,'. $' ; cnt: ds 1 ;10 second increments storage counter endif ;end if "not pause" oldstk: ds 2 ;storage for "old" CP/M stack pointer ds 32 ;storage for 16 level stack stack equ $ ;storage for "new" stack pointer ; if mpmprl db 0 ;force allocation of storage space endif ; end start '   --> FILE: -FOG/UTL.037 CRC = 00 00 --> FILE: /UTL#037.DOC CRC = C1 08 --> FILE: AUTOBOOT.BAS CRC = 61 CC --> FILE: DEXSUB .AQM CRC = 6B 7E --> FILE: DEXSUB .COM CRC = BB 4E --> FILE: DISK72 .COM CRC = 25 7A --> FILE: DISK72 .DOC CRC = F5 5D --> FILE: DRI-UTIL.DOC CRC = 33 A7 --> FILE: EX14 .COM CRC = 02 E3 --> FILE: EX14 .DOC CRC = 49 25 --> FILE: EX14 .TST CRC = EE DC --> FILE: FILEPRIN.BAS CRC = 48 46 --> FILE: FILEPRIN.DOC CRC = 44 E5 --> FILE: INDEX .COM CRC = 53 76 --> FILE: INDEX .DOC CRC = B9 01 --> FILE: OCLOCK .COM CRC = 58 F8 --> FILE: OCLOCK .DOC CRC = 88 B8 --> FILE: PAUSE .COM CRC = 89 F3 --> FILE: PAUSWAIT.AQM CRC = F9 B3 --> FILE: SEEP .AQM CRC = C1 8F --> FILE: SEEP .COM CRC = 45 8E --> FILE: SORTDIR .COM CRC = 4E E7 --> FILE: SORTDIR .DOC CRC = 62 BD --> FILE: UNPRO .COM CRC = 22 3C --> FILE: XERA .COM CRC = F4 C9 ---------------------> SUM OF CRCS = A1 C0 TDIR .DOC CRC = 62 BD --> FILE: UNPRO .COM CRC = 22 3C --> FILE: XERA .COM CRC = F4 C9 ---------------------