IMD 1.18: 22/01/1996 7:40:22 micro cornucopia kaypro user group disk 33 a super utilities disk     33-DISK DOC CRC COMCRC DOC CRCKLISTCRC D COM EDIT COMEDIT DOCaHELP COMNSWP2 HLPX !"#$%&'()NSWP2 WS *+,-./0123456789NSWP2 WS ^:;<=>?@ABCDENSWP207 COM\FGHIJKLMNOPQNSWP207 DOCRSTNULU DOCUVWXYZ[\]^_`abcdNULU DOCefghijklmnopqrstNULU DOC?uvwxyz{|******************* Welcome to Disk 33******************* Disk 33 is a utilities disk containing some very useful programs. The Micro C staff would run half speed without them. NSWP207 -- The latest version of SWEEP, written by Dave Rand. There are 4 related files on this disk: NSWP2.HLP, NSWP2.WS, NSWP207.DOC, and NSWP207.COM (See NSWP2.WS for a tutuorial and discussion.) NSWP allows you to tag files for copying, erasing, squeezing, unsqueezing, finding, and printing. For an undocumNULU11 COMx}~NULU11 NOTNULUTERMASMSUPERZAPCOM/SUPERZAPDOCUVDO-KP COM'VDO23-KPDOCgNSWP2 HLPXented start type -- NSWP207 and ? to get a menu. NULU11 -- creates, manipulates, and extracts libraries. There are 4 related files on this disk: NULU.DOC, NULU11.NOT, AND NULU11.COM. Please read NULU.DOC for an excellent description of this super library tool. To get an undocumented start type -- NULU11 and -m for a menu. SUPERZAP is a full screen debugger at only 6K. You should read SUPERZAP.DOC before plunging in. Happy bit fiddling. VDO-KP is a fast, mini-  editor -- small and easy to use. Read VDO23-KP.DOC for info. EDIT -- a utility to: copy and edit files (text and binary). Read EDIT.DOC. *************************************************************#"ɯ2i2}! "!"]]2 s : ~# ++FILE NOT FOUND++$: F*}’">͇†]<  CANNOT CLOSE CRCFILE$CRCKLISTCRCSK FULL: CRCFILE$  w# !]͐ DONE$!e S!]Q !eZ @ --> FILE: XXXXXXXX.XXX CRC = oS) \<‘@ ++OPEN FAILED++ !" !" * | ʹ) \!~2 #" Ý: ) > T : ) @ ++FILE READ Eth file - ! ~T #M M 2 2 2 2 ! >2 3o: : @ ***No CRC Files found***$> ʉ ʉw#: <2 P6: .6@ Can not parse string ! ~ʽT #ñM ! > 6 #6^#6! ~T #! 4M #x] #e w~ T #>2 @ - s M@ File not found ! 4 >2 o: G: „: G: „@ *Match* 2 ! 4@ <-- is, was --> : ) > T : ) M 2 ! 4<2 ~# @ Not a space between CRC values<2 G-CATALOG??? Using CRC Type CRC to verify all the files on this disk. Type CRC *.* F to generate CRC's for an entire disk and create a CRC file (CRCKLIST.CRC) for checking the CRC's of a copy of the disk etc. Omitting the F will suppress creation of a CRCKLIST.CRC file. *.* can be replaced with an unambiguous file name for checking just one file. RROR++ <* |): o% |g}o" 2  ; 0T ~T #~A > T > _h : F{͇2h2|: ʲ !\   :\2 ! \  \ ! \  \! \  \<7=Ɓo&   ]  2h2|2   ~$#~# x  : F} *}= ">͇1 ].”#””͡”››tK››͸›* =: =͔="  ʳ ª~#.  ¿~  #~  .+~#0:0~#!A.O.Gy~#0M0 K MMɷ:m2 FSÄCRCKLIST$$$››tK›, › **}|!"*{z*~]*"Ü  DISK FULL: CRCFILE$!"*~#CRC.COM 5.0 6/18/82CRCKFILE???!9" 1 M @ CRC Ver 5.0 CTL-S pauses, CTL-C aborts :] O@ ++Searching for CRCKLIST file++@ Now searching for "CRCKFILE" file++ !  1 .) F!  ͡]͸! ͔0CRCKLIST???CRCKFILE???!9" M à*,*.}|ډ!".*,{z{** u*.".G*.",!".***,}>*.#".ɯ22)! ",". <  NO FILECRC FILE$!   >. @ Checking wi match - : ̓ : J M @ Quantity of lines failed parse test - : ̓ : ~ M @ Quantity of file(s) not found - : ̓ * d͔  ͔ 0T  Җ Wyʩ 0T 0ztiil   --> FILE: NSWP2 .HLP CRC = 5A 75 --> FILE: HELP .COM CRC = D6 CC --> FILE: NSWP2 .WS CRC = A7 DE --> FILE: NSWP207 .COM CRC = 47 88 --> FILE: NSWP207 .DOC CRC = A9 FB --> FILE: NULU .DOC CRC = 91 E0 --> FILE: NULU11 .COM CRC = FE 7C --> FILE: NULUTERM.ASM CRC = 67 5D --> FILE: SUPERZAP.COM CRC = 8D 5E --> FILE: SUPERZAP.DOC CRC = 68 E2 --> FILE: EDIT .COM CRC = 25 21 --> FILE: EDIT .DOC CRC = 81 FF --> FILE: VDO-KP .COM CRC = 51 7F --> FILE: VDO23^#V"; *;  ͪ  *; q#pÝn* " ! p+q* )*= ^#V"; ! 6> ! i* &*; >OK : <2 E:/ *; ^#V*% DMf kK : *; Nf E*; ~ڻWK þE *; ~SK E = ! 6:! ':/ : = !: = : <2 * " !" >! .  * *&͵ "( * *&͵ > j*( #"( *DM*( V"( !" (   K!" }2 : <2 O:* * * "    >! = * DM** +" *( * " Ø* #" *&C 4Ø:!4:!5(  ! I3= : [= t:\a:\=_: :] t ?]\ : ҃! 6?Î : 2   ]Q  ?\\ : DM, Q ! "= *3 ##)*= "; */ &# "! *3 #"#  !! "% >!1 . 2' \: 2 : ʩ: ƀo&"* ~ʛ*# +"# ** DMY қ** DM  *; q#p* " . ** #DM*; -e**  *; w* #" )*= *; s#r*; "; : 2 !S 6!"V * "n >!S d*S &T ) ^#V"K O!l ^#V"M :S =2S M K  a*K "G *:] -ʔ:l¨:mC(DʶPx͇<8oF>!>#C"U*~o_͊#{ XX*KBDlEʀFʞHIJYKcNPQR{ToUlZ!G0 O G))))!"w# ~#w#+"F"> O:"~l2x2 :0}*w0A````!@#~06 œF2\|!"F!" ͊ ͊͊!:l_͊X͊:l_͊X͊ ͊͊-KP.DOC CRC = F7 5D --> FILE: NULU11 .NOT CRC = 14 FD --> FILE: D .COM CRC = 66 48 --> FILE: CRC .COM CRC = B2 07 --> FILE: 33-DISK .DOC CRC = 58 E3*( * " 3*1 #" " " *5 " > # R : B * +" ! +s#r( ! 6: " * ~2 * #" * +" > ʶ : 2 Ғ * +" : <2 O>ҳ ! 6* #" * ~2 p ̓: AOK = * Ͱ= * ͷ= * Ͱ= *# ͷ= * Ͱ= . g S -A >>!  ~?l W >#^ : /!:' —  ʑ #‹  W ʢ #™ i`N#FogDM!>))덑o|g =¼ DM!>)) = ^#V) ^#V|g}o M "I *K  )*= ^#V"O I G  *G )*= N#F*O ? J*G #"G (*I )*= ^#V*O DM? m*I +"I JI G  *G )*= ^#V"Q *I )*= *G )*= N#Fq#p*I )*= *Q s#r*G #"G *I +"I K I  G M   !M G  :S <2S O!T *G s#r*S &l ) *M s#r*I "M ^I K  X:S <2S O!T *K s#r*S &l ) *I s#r*G "K û!" "    #* #" )*= * #" )*= N#Fq#p   * )*= * ) *= ^#VN#F? H * #" )*= ^#V";  *; ^#V" * )*= ~l_͊X͊ ͊# ͊~. 99_͊#+ ͊ ͊*"}*+"|vG0:*"\ > !G>²#²+~ #"~# "U>22 ͊Y!~+/%~T44^6 +6 !F>#@6 9!F#""T]U7"F6!<~# ʇ § ͊z˜Ç_͊{ ‡‡ ͊Ã*DM *"w+yx[0OyN7" Hit Space: KK : k Used: /k Not used: k *% DMf : remain on 1 !9" ! J> # ->! . *ͪe> # < * v K  K  K !B r+s+p+qA ?  p*A *? :]$Ž l]Q !]6 !E 6!C 6 :C *C &l ~2D U¼:E 2 :D S:E 2:D F:E 2:D V:E 2:D P:E 2 :D N2E ! _{ozgO{ozgi`N#Fogo&og_{_z#W OK = Y -S {-_ ! s+p+q*  ͼ 2 <2 : ! ڗ  K ! 4Á ! 6: =! ڻ * & NK ! 4œ >3  03} Z; { ) #    Ê!\l !u6B#6A#6Kl͇*~ *L"|2h2|͇<!"*͇ѷ*#"!`}> !~o#6!\ !\6#>  !::~@2\##]~.#~.#e~#͇<+#͇*})))))))F!~(#!\ +~#++~#+ >#|g}oyON#>/T]< c"6_ ͇2h2|͇<!͇*+"|¦͇a :\=_##~2###^#V#"ile must fit in the 'TPA' of your computer. For most 64K machines, this means that you can use EDIT on files up to about 50K in size, which is more than adequate for most applications. EDIT won't damage a file too large - it simply won't work with it. System Requirements EDIT will work with any CP/M 2.2 or 3.0 computer. If the machine is a CP/M Plus system with bank switching, the amount of disk free space reported will be incorrect, but all other functions work normally. EDIT's functions is used, the program is still smaller than comparable single-function utilities. An example of a typical use is with dBase II. EDIT will enable the user to write and modify command files, check on the disk space left, copy files for backup, list command files on his printer, and even (assuming enough knowledge) examining and repairing 'broken' files. EDIT is unique in that all of these functions are within a single program only 2K in length. Operatirocess for addresses 856, and 857 if needed. Then when you are done and EDIT is still asking ADDRESS?, just hit and EDIT will rewrite the changed file, in this case itself. Now look at the disk. You should have EDIT.COM and EDIT.BAK. EDIT.BAK is the original file and EDIT.COM is your newly instal- led version. Instruction To get used to EDIT, we suggest making a special disk for prac- tice. Prepare yourself a work disk with CP/M on it (check your computer manA2P2>?!] !͇;!_# >26!~ʐ] >$2h]> 2h#͇*}:GL:ʄ)=|@B> 2FFxGڧ ¯#F*+"| :)=|=_͊Yf*New file $ Command? $ Label to find? $ Disk full$ xxxxk$space on x: $ $ No file$ap this screen? (y/n) $ File to insert? $ x:$ Address? $ Byte=xxh change to: $unk changes? (y/n) $runcate file? (y/n) $EDIT 1.1 Mike Rejsa Mpls MN A specific amount of RAM is not required. Installation EDIT is easily installed using only EDIT itself. Follow the following steps. 1. Copy EDIT onto a disk with CP/M on it, using whatever method your computer outlines for copying files. Put the original EDIT disk away with your backup disks. 2. Find out the 'hex code' your computer or terminal uses to clear its screen. If you don't know this or can't find it in your manual, ask your dealers technician. Be sure it ison is fast and easy with single letter commands for editing, and prompting where required. EDIT will replace PIP, STAT, XDIR, and ED for most users needs. One of the reasons for EDIT's small size and fast operation is its method of handling files. The entire file is read into memory at one time, and re-written only after the desired changes are made. For safety EDIT never changes the original file, always writing a new modified copy. However, the tradeoff is that the entire fual if you don't know how to do this.) Then put your empty work disk in drive A: and a disk with EDIT on it in drive B:. 1. Copying files First we will learn how to copy files using EDIT. Type B: so that we are on the B: drive (where EDIT is now). To copy EDIT onto our work disk type EDIT EDIT.COM A: . EDIT will copy itself to drive A:. Then we can type A: to go back to the A: drive. Type DIR to see that EDIT is there. Here is what w EDIT.COM Multiple Utility Program --------------------------------- Version 1.1 Introduction EDIT is a utility program which performs many different functions often needed in daily computing, put together in a single small program which is easy to use. Functions include text editing, disk file size and free space reports, file printing, file copy- ing, 'dumping' of a file in binary format, and alteration of machine code files. Even if only one of in 'hex'. For example, an Osborne's code is '1A hex'. A Z-19 terminal would use '1B hex, 45 hex', two codes. 3. With your EDIT disk in the computer type EDIT EDIT.COM C . EDIT will respond with the question ADDRESS? which you answer 855 . EDIT will respond with BYTE=00h CHANGE TO: . Enter your first hex code. (For Osborne this would be 1A.) 4. If you have more than one hex code to enter (each one is two digits) repeat the above p  e did: EDIT EDIT.COM A: (starts EDIT) (tells EDIT what) (tells EDIT what) (tells EDIT to) ( file to copy ) (drive to put it) ( get going! ) ( on ) 2. Make a test file Now we are going to make a test file for us to practice on. Type EDIT TEST.TXT . EDIT will inform you that this is a new file and ask for a command. We want to insert text, so press I for Insert. (You d files and see whats inside them. 5. Printing EDIT can send files to the printer for you. Get your printer ready to go, and type EDIT TEST.TXT P . The text you entered earlier is now sent to the printer. When the printing is done and you are back at the A> prompt, type EDIT - and you will get a list of files on the B: drive. 4. Hex Dump Many users won't have much need for this function, but it is fun. A 'hex dump' is a display of the digital codes that are inside a file. Type EDIT TEST.TXT D . You should see on your screen a complete list of all the digital codes inside TEST.TXT. Over on the right is a list of the letter that goportant thing to note here is that the text was inserted before the line that was at the top of the screen when you pushed 'I' (insert). The line at the top of the screen is the 'active line', i.e., most things will happen at that place in the file. Now use 'U' to move the line you inserted to the top of the screen. Hit 'K' for kill. This command deletes the line at the top of the screen. Hit 'B' (beginning) and you will see that the inserted line is now gone. If you ever wanon't have to hit Return!) Your screen will clear (if you installed EDIT properly). Now type in whatever you want, say part of the newspaper. Put in enough so that you fill up more than the screen can display at once. When you are ready to stop inserting, type / at the beginning of a new line. When we do this character at the beginning of a line EDIT knows that we want to stop inserting. EDIT will now ask for another command. We're done for now so type Q for Quit . EDIT will load TEST.TXT into memory and display the first 22 lines on the screen. First we will try the commands for moving around. All of these commands are just one letter - no Return needed. 'U' and 'D' are the commands for moving the text on the screen up or down one line. 'H' is a special kind of up that hops five lines. 'P' and 'N' will jump the screen to the previous or next whole screen. Finally, 'B' or 'E' will move you to the beginning or the end of thes with that code, if any. (If no letter goes with that code we just put a period there.) It is easy to stop the display from scrolling when you want to examine something - just type a Control-S to freeze the display. Then when you are done, type any key to start it again. (A CP/M Plus computer needs Control-Q to start again.) While this function is mostly useful to programmers, it can sometimes help to locate a bad byte in a 'broken' file. Try doing a hex dump of othert to kill an entire screen of text, use the 'Z' (zap) command. Because deleting a whole screen is pretty drastic, Zap will first ask you to confirm your choice with a 'Y' or 'N'. EDIT is what is called a 'line editor'; this means that you must insert or delete an entire line when you make changes. This is part of the reason why EDIT is so small. One last word on inserting: If you ever have an entirely seperate text file that you would like to include in the one you are work. (Again, no Return.) EDIT will save the file we made onto the disk. When CP/M gives you the A> prompt, type TYPE TEST.TXT , and you should see the words we just entered. Try copying TEST.TXT to the B: drive (the command is EDIT TEST.TXT B: ). 3. File size and Free Space Now try typing EDIT . We should get a list of all files (in this case just EDIT.COM and TEST.TXT) with their sizes, and a report on how much room is left on the disk.e file. Try each one of these commands until they are understood fully. Now we will insert some text. Push 'B' (to the beginning) 'H' (hop up five lines) and 'I' (insert). Your screen will blank. Type some recognizable line such as 'This is the inserted text.' and hit return. Now type / to stop the insert mode. You should see the line you inserted at the top of the screen. Hit 'B' (go to beginning) and you will see your inserted line five lines down. The im  ing on you can use the 'R' (read file) command. This will ask you for a filename, go get the file, and insert the whole thing at the top of the screen. There are two commands for you to use when you are done editing. One is 'Q' for quit. This saves your edited file, and renames your original file to filename.BAK, for backup. The other command is for when you have decided not to save your work, and want the files on the disk to remain just as they originally were. This command is n B - moves to the BEGINNING of the file E - moves to the END of the file I - INSERT text mode / - / at start of new line to stop inserting R - READ in file and block insert into current file K - KILL line at top of screen T - TRUNCATE file from top of screen Z - ZAP entire page F - FIND line (asks for label to search for) J - JUNK changes, leave disk file as it was Q - QUIT and save file. original is named .BAK Install on specific machine by patching in clear screen------------------ Function commands (entered at the A> and followed by Return) All commands can be upper or lower case EDIT - gives XDIR report for current disk EDIT B: - gives XDIR report for specified disk EDIT filename.typ - Edits file, creates file if new EDIT B:filename.typ - Edits file on specific drive, creates file if new EDIT filename.typ C - allows changing a byte in any file EDIT filename.typ D - dumps file to screen EDIT filename.typ P !9"2!!]~ 0+ )>2F!e~ =F)\a:n!"4g1!~:‚*͛1}*͊@Gʨұ Ҩ*~#Â~#  #~:ʹÂ*~͕#~n͊_ ~#)\*)"~ a b#O##͊:=2An}͕͊> > >2!͕>A2}l~:} :}<2}>.> Oî"~͕O~: :Gc'J', for 'junk changes'. Just as with the Zap command, abandoning a file can lose important work, so before we go through with a Junk you are asked to confirm the choice with a 'Y' or a 'N'. The last command to learn is the 'F' (find) command. This works a little differently than most other editors, and is intended primarily for programmers. Look ahead in your test file for a word which is the first word on a line. Then use 'B' to move away from it. Hit 'F' and EDIT  codes in bytes 0855h - 0857h. Set unused bytes to 0.  - Sends file to the printer - expands tabs and provides page breaks EDIT - - Sends formfeed to printer EDIT filename.typ B: - Copies file from current disk to B: EDIT A:filename.typ B: - Copies file from A: to B: EDIT B:filename.typ A: - Copies file from B: to A: Text editing commands (not followed by pressing Return) U - moves text UP a line H - HOPs text up 5 lines D - moves text DOWN a line P - moves to the PREVIOUS screen N - moves to the NEXT scree͊:=2-}͕HELP V1.1 $ ++ EOI ++ Type CTRL-C to return to CP/M, to continue -$ HELP File Selections are -- $HELP HLP Type "A"=Abort, CTRL-C=CP/M, =Cont -$ HELP FATAL ERROR -- File not Found$ HELP ERROR -- Invalid Response $ HELP ERROR -- EOF on HELP File $ Type CTRL-C to return to CP/M, "*" to select all, or enter selection - $ections are -- $HELP HLP Type "A"=Abort, CTRL-C=CP/M, =Cont -$ HELP FATAL ERR:The HELP Subsystem for Online Documentatiwill ask you what label to find. Give it the word you saw and a . EDIT will search the file for a line starting with that word and position that line at the top of the screen. If no word is found, EDIT positions the file at the beginning. Caution: the word must match the case of the original - if one is upper case and one is lower case, the word will not be found. Quick Reference - EDIT.COM Version 1.1 ---------------------  on This is HELP, the Online Documentation Subsystem. The purpose of HELP is to allow the user to interactively query the *.HLP files of the system in order to receive information summaries on various aspects of the user's working environment, such as the language systems he is using and certain subsystems available to him. When the user types 'HELP', a search is done for the file 'HELP.HLP'. If found, the contents of this HELP File is displayed to the user; if not found, the HELP Infor on. A>NSWP B: will begin with drive B: logged in. Selecting user area * will cause all user areas to be "swept" at once. At any time, you can view the menu of functions by typing a question mark (?). Simply typing 'x' exits the program. Note that all characters can be entered in upper or lower case. :C - Copy file function C -- This allows you to copy the file to the drive and user area of your choice. You will be prompted for the drive and user area. J 3.0. NSWP2 will not run under CP/M 1.4, but it will run under MP/M . This software was orginally written in PL/I by Robert Fisher. The current version was written in CP/M assembler by Dave Rand with a number of added functions. :Invoking NSWP2 and moving about the directory When NSWP2 is invoked, you will see a display of the current user area you are in, along with the total amount of space occupied by the files, the number of files there are and the amount of disk space remallow two files of the same name to be open on the same drive, even in different user areas. Thus, when transferring between user areas on the same drive, the target file is first named with the $ convention and then renamed. This can result in an extra file being erased. If there is too little room on the target drive, the transfer is aborted and the directory entry is erased. :D - Delete (ERAse) file(s) D -- The current file is deleted. You will be asked if you really wmation you are now reading is displayed. If the user desires information on a specific topic and he has a HELP File of that name (ie, CPM.HLP is a HELP File on CP/M), he may issue of HELP Command of the form -- HELP d:topic where "d:" is the disk the HELP File resides on (optional) and "topic" is the name of the HELP File (topic.HLP, like CPM.HLP). Please refer to the HELP File "HELP.HLP" for more information. ust enter 'b3:', say, to transfer the file to drive B: user area 3. If you omit the user area, the current user area of the file is used. Any file of the same name in the target area is first erased, an exception being when you are transferring to the current drive and user area. In the latter case, the transferred file is copied with its named changed by putting a $ in the last letter of the file type. If an existing file in the target area that must be erased is marked rining in k. You will then get a display of the first entry in the directory. NSWP will also give you a listing of the user area that the file(s) are on, if you logged in all user areas. Typing 'space' or 'return' or 'F' moves you forward in the directory, typing B (or b) moves you backward. The directory is circular, so typing space at the end of the directory moves you to the beginning. (A line is skipped.) When you first invoke NSWP, you can specify an alternate drive to startant it erased. If the file is read-only (R/O), then a bdos error will occur, and the program will warm boot. :P - Print a file P -- The current file is sent to the LST: device (your printer). If the file is squeezed, it will be unsqueezed as it is listed. A control-C interrupts the function. :R - REName file(s) R -- The current file is renamed to the name and user area you specify. For example: A15:FOO .COM? A0:FOO.COM will rename the file from A15 to A0. Lower What is NSWP2? Invoking NSWP2 Copying a file Delete file(s) Print file(s) REName file(s) View ASCII file(s) Tag files Mass copy of files SQ/USQ file(s) Re-Tag files Batch REName Log to new drive/user Other commands Special features DDT customization Remarks :What is NSWP2? NSWP2 is a utility program for maintaining file directories, transferring files between user areas on the same drive, and transferring files between drives and user areas under CP/M2.X and under CP/Mead-only (R/O), then the copy is simply not made. You will be told. You may use the delete function to delete the file, and then retry the copy. As an option, NSWP will perform a CRC verification of the copy. When you are prompted for the drive and user, add a 'v' or 'V' to request verification. Thus specifying 'b3: v' will copy the file to drive b:, user area 3, with verification. A description of the verification method is included with this documentation. BUG: CP/M does not a   case will be converted to upper case, but other 'illegal' characters are not trapped. It is quite possible to give names to files that CP/M won't recognize. (You can also change them back again later, however, so no harm is done.) Responding with "*" to the prompt will put you in the batch wildcard renaming mode.If the file is read-only, a bdos error will occur and the program will warm boot. :V - View an ASCII file V -- The current file is displayed at the terminal, wit If SQueezed, then USQ, etc. NOTE: The "Q" option will NOT work on untagged files :A - Tag again A -- Retags all the files currently marked with '#'. This allows you to repeat the transfers on another disk. Useful when the same batch of files must be sent to several disks. :R - REName file(s) R -- Batch rename. You will be prompted for an "Old name:" and a "New name:". In each case you may give any "ambiguous file name" in response. The logged-in directory is searched for matchesokes the copy function used by C, so everything said above applies here. To abort the transfering process, you must enter a CTRL-C. After transferring a tagged file, the tag is changed to '#' so you can tell what has been sent. This is for display only, the file is otherwise considered untagged, but see the A command. The '#' can be removed with the U command, if desired. If no user area is specified, or if "*" is specified, the current user area of the file is used. You may ru directory listing S -- Calculates space remaining on a drive. Simply enter drive letter to be examined W -- Wildcard tag of files. Allows you to select a large group of files for tagging. *.* *.ASM *.OBJ etc... X -- Exit to CP/M. ? -- Redisplay menu of commands. :Special features If your terminal supports reverse (or inverse) video modes, then NSWP2 can show you the attributes set for each file. If none of the attribute flags are set then the direch automatic pagination. The return key will continue the process until a control x is typed to cancel the display to the screen. Single line spacing is possible by typing the space bar when the screen display has stopped. :T - Tag file(s) T -- Tag a file for later transfer. (See below.) After being tagged, the file will be marked with an asterisk,'*'. The total of all tagged files is displayed both in units they occupy on the current disk and in units they would occupy on a with "Old name", and the files are renamed, if possible, by the formula specified in "New name". A '?' in "New name" means keep that character of the current file name, an * is equivalent to filling out the remainder of the field (filename or filetype) with "?"'s. Any other character replaces the corresponding character in the current file name. When the substitutions are done, embedded spaces are removed. :L - Log new du: L -- Login new drive and user area. I request verification on mass transfers just as in the single file copy. Just follow the drive and user specification with a space and a 'v' or 'V'. :Q - SQ/USQ Tagged files Q -- Mass transfer of all tagged files to a selected drive and user area, unsqueezing those which have been previously squeezed, or squeezing those which are tagged. OPTIONS: S - SQ tagged files during transfer U - USQ tagged files during transfer R - Reverse status to specified du: tory listing will appear as normal. If any of the 1-4, R/O, SYS, or ARC bits are set, they will appear with a reverse video block in the directory listing. NSWP2 may be also set to clear your local CRT when it signs on. To use these special features, see the next section dealing with DDT customization of memory byte locations. :DDT Customization The byte at location 103h sets the number of lines displayed per screen by the "V"iew command The reverse (or inverse) ON video bytes are from 1 single-density disk with a 1k block size. U -- Undo the effect of T (and take away the '*' or '#'). * -- Indicates a currently "tagged" file # -- Indicates a previously "tagged" file, may be re-tagged with the "A" option :M - Mass transfers M -- Mass transfer of all tagged files to a selected drive and user area. This is the main reason for the program. If the target drive fills, the operation is aborted, with the untransferred files remaining tagged. This function invf the user area is ommitted, the current user area is used. You can NOT specify a starting place in the directory. Selecting "*" for user area, logs in all user areas at once. When logging into a new drive/user area be sure to follow the user number with a colon. i.e. B2: logs ALL files on B2 B*: logs ALL user areas of drive B B2:*.OBJ logs ONLY the .OBJ files of B2 :B, S, W, X, and ? commands B -- Moves you backward th  04h to 10Ah, the first byte indicates the length of the sequence. The reverse OFF video bytes are from 10Bh to 111h, again the first byte indicates the length of the sequence. Bytes 1D13h thru 1D17h or for your clear screen code sequence. These memory locations can be set with DDT in the "S" mode, or even easier by using the EDFILE utility program. Be sure to SAVE 43 after using DDT.COM :Remarks Whenever a drive is asked for (and on start-up), the disk system is reset. This is to pre..................... 3 Overview of NSWP ............... 4 Invoking NSWP .................. 5 Single file commands ................ 6 Help ........................... 7 Forward and Backward ........... 7 Exiting ........................ 8 Finding a file ................. 8 Viewing and Printing ........... 8 Deleting a file ................ 8 Copying ........................ 9 Renaming ....................... 9 The Space command .CRC checksum while writing the file. NSWP then reads the copied file back computing it's checksum. The two checksums are compared and you are told if they don't match. The CRC verification takes approximately 2.5 times as long as the straight copy. This documentation last updated 28 Mar 84 by Steve Sanders. It reflects the latest version available at that time. NSWP202 Z8 compatibl processo wil serve Not tha thi progra WIL NOT ru o CP/ 1.4. Whe NSWР wa conceived th dominan fil utilit wa SWEEP an thu NSW i synta compatibl wit SWEEP bu wit man extensions Thi allow yo t directl renam NSWР t SWEEP i yo s desire wit n retrainin period. ɠ hop tha yo enjo thi program an us i well An problems o suggestion ma b directe t mysel a th addres o th firs page o vent a disk from being 'read only' under CP/M, and to allow you to repeat operations on fresh disks (e.g., finish a mass transfer after a disk fills by inserting a second disk). It also means that you should be free to switch density and/or number of sides of a disk in a particular drive. This, however, depends on how well your BIOS is written. There is no logical upper limit to directory size, nor to the size of a file that may be transferred. The directory size is limit............. 11 The Log command ................ 11 Introduction to Multifile Commands .. 12 The Tag command ................ 12 Wildcard tagging ............... 13 The Untag command .............. 13 The Mass copy command .......... 13 After the mass (Again) ......... 14 Erasing files .................. 14 Squeezing and Unsqueezing files. 14 Setting file status ............ 15 Epilogue ............................ 16 Credits ........................ NSWP - A disk maintenance utility. Dave Rand 10232 - 160 Street Edmonton, Alberta Canada T5P 3E9 .pa .he NSWP 2 - A disk maintenance utility .fo - # - I N D E X Page Introduction ...o on o th followin RCP/Ms: Edmonton RCP/M - (403) 454-6093 (300 or 1200 baud) Stadium RCP/M - (403) 479-3450 (300 baud only) or voice at: (403) 484-4114 Disclaimer and warning Whil thi progra ha bee teste o man systems ɠ wil hav n liabilit o responsibilt t th use o an othe perso o entit wit respec t an liability los o damag caused o alledge t b cause directl o indirectl b thi program includinged by available memory, though, as certain information must be kept on each entry. You should be able to use well over 1500 entries in a 64k system. Figure 20 bytes per entry starting at 26k and running up to within 1k, or so,of the BDOS. File transfers make use of as much memory as possible to buffer data. It is required to include the colon when specifying a drive and user area. Thus responding "B3:" is not equivalent to just "B3". Copy verification is done by computing a ..... 16 Contributions ....................... 16 .pa Introduction NSWР i ne dis utilit tha ca replac man o th mor commo utilitie tha ar used suc a STAT PIP USQ SQ TYPE PRINT SWEEP DISK7 PROT an others I onl 12 o dis space i replace ove 100 o utilities! NSW i writte entirel i assembl language an wil ru o an CP/ 2.x 3. o MP/ base syste wit n changes Sinc i i code i 808 assembler an 8080 808 o    bu no limite to an interruptio o service los o business anticipator profit o consequentia damage resultin fro th us o thi program. Furthermore althoug thi progra ha bee place int th publi domain retai al copyright t thi program bot i th U.S. an i Canada an pursuan t this thi progra MA NOԠ BŠ SOL B AN PARTY unles specificall authorize b th author Dav Rand i writing previou t th firs cop bein soldad NSW an scan th curren driv an use fo al filename wit th extensio "COM" Not tha NSWР ca fin syste file a well s n additiona informatio nee b given. A>NSWP B:*.COM * Th presenc o th secon asteris indicate t NSWР tha yo wis t sca al use area o th indicate dis drive I thi case al "COM file o al use area o driv B. Combination o th abov ar acceptable an yo ma eve lo t al use areas an fin a leas once. Th mos importan thin t remembe whe usin NSW i tha i provide lis o you file i ALPHABETICA̠ order Movin aroun i thi lis i quit easy an wil soo becom secon nature. I thi documentation al use inpu i underlined A well whe th堠 "current fil i reference䠠 i thi documentation i mean th fil jus t th lef o you input Thi "current fil i ofte referre t a th fil yo ar "on"./user o t eXit N other choices are valid, nor will they be accepted. .pa Comman Structure Ther ar tw primar type o command i NSWP thos tha ac o on fil an thos tha ac o man files W wil g throug the both Befor doin tha though let' tr movin aroun i NSW first. T mov i NSWP yo mus firs understan tha th file o you selecte drive/use wil b presente t yo i sorte manner Th file ar sorte i  A well thi progra MA NO B INCLUDE IΠ AN٠ OTHE PACKAG FO SALE eve i thi progra i indicate a bein 'i th publi domain' Al o th abov applie t bot th origina a wel a derived o modifie copie o th original An modifie copie o thi progra MUS NOԠ hav th copyrigh notic violated change o altered. Pleas repor an copyrigh violation t th author a on of the above telephone numbers. Thank you. .pa al file wit th specificatio "*. *". Onc insid NSW yo ar presente wit menu the repor o whic driv an use yo ar logge to ho muc spac i take b th file yo hav specified ho man file hav bee foun wit th specification given an ho muc spac i lef o th disk sampl follows: Drive A0: 596K in 36 files. 735K free. specia forma o thi lin show tha yo ar logge t al use areas: Drive B*: 950K in 234  .pa Invoking NSWP T mak effectiv us o NSWP yo mus kno th variou option availabl t yo whe yo invok NSWP Her ar som o th options: A>NSWP Thi forma simpl load NSWP an scan th defaul driv an use fo filenames Onc insid NSWP yo ma chang t differen driv and/o user bu whe yo exi yo wil b returne t th drive/use tha yo calle NSW from. A>NSWP *.COM Thi forma lothi order Filename Fil extension use area: 1. B0: -WORK .001 0K : 2. B0: ARCADD .COM 4K : 3. B0: ARCCOPY .COM 2K : A yo ca see th file ar numbere fo you convenience Yo ma no directl us thes numbers A yo ca see th fil siz i als show (rounde t th neares bloc size). Not tha i yo hav enable th revers vide sequenc (se Epilog) yo ma se som o th letter i th filenam printe i revers vi NSWP Overview NSW i director an fil manipulatio program Wit it yo ca copy delete rename unsqueez an squeez files Th documentatio followin i spli int tw majo sections tutoria fo th inexperienced an referenc section Th referenc normall wil b use i conjunctio wit th progra t answe specifi question regardin NSWP Th tutoria i broa coverag o al o th functions an shoul b rea throug files. 2956K free. From this point, you may execute any of the menu options. specia displa occur i n file ar foun wit th specificatio yo hav given o i ther ar n file i th give drive/use area(s): No files. Thi displa ma als occu i yo delet al th file ou o give specification Whe thi occurs you men choice ar limite t ONL S L o X Thi allow yo t se th fre Spac o drive t Lo t anothe drive  deo Th char belo show ho t decod thi information FFFFFFFF RSA 12345678 /YR |||||||| OSC 4. B0: ARCDEL .COM 2K : A yo ca see thi look confusing Really though i i not Th tag F1-F normall ar no used bu NSW allow yo se F1-F fo you ow use Th R/ ta mean tha th fil ma b read bu no writte to Th SY ta mean tha th fil doe no appea i norma DI listings an i CP/ 3 MP an CP/ 8 t th othe en automatically. Exiting T exit jus us th 'X comman a show above Thi wil retur yo t th sam driv an use are tha yo invoke NSW from regardles o anythin yo ma hav don i NSWP. Finding a file Sinc yo ma hav man hundred o file selected yo ma wis t mov rapidl t particula file Yo ma d thi throug th 'F' o FIN command. 1. B0: -WORK .001 0K : f Which file? BASCOM ton, Alberta A - Retag files | Q - Squeeze/Unsqeeze tagged files B - Back one file | R - Rename file(s) C - Copy file | S - Check remaining space D - Delete file | T - Tag file for transfer E - Erase T/U files | U - Untag file F - Find file | V - View file L - Log new disk/user | W - Wildcard tag of files M - Mass file copy | Y - Set file status. P - Print file | ? - Display this help X - Exit to CP/M | cr, sp - Forward one fil wil stop an allo yo t abor th viewin wit ^ o ^X T ge on mor lin fro th file hi th spac bar T ge anothe page hi th nswp b: NSWEEP - Version 2.xx 10/22/1983 (c) Dave Rand, 1983 Edmonton, Alberta Drive B0: 850K in 64 files. 118K free. 1. B0: -WORK .001 0K :  2. 8. B0: BASCOM .COM 32K : Th Fin comman alway start lookin fro entr numbe one Yo ma us th standar CP/ synta fo wildcardin (eg t fin th firs .HE file yo ma us *.HEX) an als not tha th Fin comman wil fil al blan space wit questio marks Thi make th searc string "B*.*" "B" an "B??????. al fin th firs fil beginnin wit "B" A yo experiment yo wil fin othe interestin use fo thi command. A thie Moving forward and backward A yo ca see th tw mos commo command wil b movin forwar an backward throug th directory Eithe th SPAC ba () o th RETUR ke ( ma b use t mov forward T mov backwards simpl us th 'B key Not tha al command i NSW ca b eithe i uppe o lowercase Internally lowercas wil b converte t uppercase I yo reac th en o th director wit eithe command yo wil b "wrappe aroundkey Befor deletio occurs yo wil b prompted. 12. B0: CDP1 . 40K : d Delete file? y 12. B0: DEAD .DAT 100K : I an repl othe tha 'y o 'Y i give th fil i no deleted I th fil i deleted i i remove fro th lis an th nex fil i give th curren file' number If the file is a Read Only file, you will be prompted again: 12. B0: CDP1 . 40K : d Delete file? y R/O. Delete? y 12. B0: DEAD .DAT 100K :  B0: ARCADD .COM 4K :  3. B0: ARCCOPY .COM 2K :  4. B0: ARCDEL .COM 2K :  5. B0: ARCDIR .COM 2K : b 4. B0: ARCDEL .COM 2K : b 3. B0: ARCCOPY .COM 2K : b 2. B0: ARCADD .COM 4K : b 1. B0: -WORK .001 0K : x A> Help A an point yo ma reques th mai hel men b pressin '?'. 1. B0: -WORK .001 0K : ? NSWEEP - Version 2.xx 10/22/1983 (c) Dave Rand, 1983 Edmon point yo no kno ho t mov throug you directory bot rapidl an on ste a time Let' mov o t som mor usefu commands. Viewing and Printing a file Th Vie command invoke wit 'V' wil typ th curren fil ont th screen unsqueezin th fil i required Not tha thi comman wil NO preven yo fro listin AN typ o file s yo mus us you ow judgemen o wha ca an canno b listed A th en o eac pag o th screen vie   Copying a file While on any file, you may copy that file to: A) Another name, on the same drive/user B) Another name, on a different drive/user C) The same name, on a different drive/user NSWР wil preven yo fro copyin fil t th sam drive/use tha th sourc fil reside on Othe tha that ther ar n restriction o wher yo wis th fil t be I fil exist o th sam drive/use tha yo wis t plac th destinatio file th existi renamed An vali wildcar ma b use t selec th sourc files an th destinatio file wil tak on characte fro th sourc fo eac '? i th name A asteris qualifie a fillin th remainde o th fiel wit '?' I th destinatio fil exists th renam i no made. .pa Yo ma als choos t renam grou o file t anothe use area optionall changin thei name a well: 9. B0: BASIC .COM 24K : r New name, or *? * Old name? *.HEXname of one file B) Change the names of many files C) Change the user number of one file D) Change the user number of many files To just change the name of one file, the syntax is simple: 12 B0 CDP 40 r New name, or *? CDP2 12. B0: CDP2 . 40K : You may also change the user number of the file, as follows: 12 B0 CDP 40 r New name, or *? B1:CDP2 12. B1: CDP1 . 40K : Not tha i al use area ar no specifi 16. B0: DD .COM 4K : l New drive/user/mask? A14:*.HEX NSWEEP - Version 2.xx 10/22/1983 (c) Dave Rand, 1983 Edmonton, Alberta Drive A14: 44K in 2 files. 1118K free. 1. A14:NSWP .HEX 22K: .pa Introduction to Multifile commands No tha al th command tha affec singl file hav bee described i i tim t introduc th concep o Multifil commands Thes command ar one tha affec a fen fil i delete automatically eve i i i Rea Only Whe NSW copie file al th attribute o th origina fil ar passe o t th destinatio file Thus i fil i SYS R/ file NSW wil caus th destinatio fil t b SYS R/ afte th fil cop ha take place. 12 B0 CDP 40  Cop t (filespec) C9:BACK.CD I yo wis t preserv th nam o th file yo ma jus ente th destinatio drive/use par o th filespe New name? B1:*.BAK Thi comman wil renam al .HE file o driv use t th sam filename bu wit th extensio .BAK an plac th resultan fil i use 1 Yo ma wan t tr thi comman fe time t ge th han o it bu i i extremel powerful. The Space command Th Spac comman ('S' simpl ask yo fo driv code the tell yo th remainin spac o th driv yo specify Befor doin th spac check driv rese i perfoe i th logo o NSWP th fil ma no b show o you lis whe renamin t anothe use area. T chang grou o file fro on nam t another yo ma ente th followin comman a an file: 9. B0: BASIC .COM 24K : r New name, or *? * Old name? *.HEX New name? *.BAK A thi poin al file wit th extensio .HEؠ wil b rename t th sam filenam bu wit th extensio .BAK Yo wil se runnin displa o th scree a eac fil i a on o a man a al o th file o singl disk T affec thes files though w mus hav som wa o describin whic file nee t b affected CP/ ha wa t d this usin "wildcards" Thi program o th othe hand use th concep o fil "tag". The Tag command Taggin file i it simples form ca b accomplishe jus b depressin th 'T ke whe th fil t b tagge appears Wha exactl i tag tagge fil i fil i th  (eg C9 i th precedin exampl woul hav copie th fil t driv use 9 retainin th nam CDP1) Jus enterin th driv par o th filespe cause NSW t retai th use numbe o th sourc file. I th filenam i followe b space the "V" th fil wil b verif rea afte i i written NSW maintain CR o th fil a i i writin th file an verifie thi CRC. Renaming files The Rename command ('R') may be used to: A) Change the rmed s fee fre t chang disks. The Log Command Th Lo comman ('L' allow yo t chang you director t anothe driv o user Additionally i allow yo t re-specif th wildcar mas jus lik enterin th NSW progra fro CP/M A well th driv syste i reset s agai yo shoul b abl t chang t differen diskett a thi poin o t anothe par o th sam diskette Whe th Lo comman i used th instruction ar reprinte fo review.   lis o filename tha ha a asteris nex t th colo afte th nam o th file a show below. 9. B0: BASIC .COM 24K :* tagge fil i differen fro a untagge fil i tha yo ma no reques a operatio tha deal wit severa unrelate file (eg File tha wil no matc usin onl on wildcard) sampl "tag sessio i shown: 9. B0: BASIC .COM 24K : t Tagged files = 24K ( 23K). 10. B0: BRUN .COM 16K : t Tagged files = 40K ( 39 .COM 16K :* A yo ca see th unta functio subtract th curren file' siz fro th total the display th tota o th remainin files. The mass copy command No tha w hav numbe o file "tagged" wha d w d wit them Well th Mas cop functio i on o thos tha ac o man files It purpos i t cop th tagge file(s fro on drive/use are t anothe drive/user. 12. B0: CDP1 . 40K : m Copy to drive/user? A alread kno tha CP/ ca allocat storag onl i "BLOCKS" an tha thes "BLOCKS ma b u t 16 i length Thi mean tha NSW woul sho fil containing say 51 byte i information a bein u t 16 long dependin o you computer Th secon numbe i th ta displa show ho muc storag th cumulativ file woul tak i the wer store o singl sided singl density 8 diskette. .pa Wildcard tagging Anothe wa t ta file i th wildcar ta funcdifferen diskette o use area o drive T invok this us th "A command. 12. B0: CDP1 . 40K : a Retagging--> B0: BRUN .COM Tagged files = 16K ( 16K) Erasing files Yo ma wan t cop grou o files the delet the fro th sourc dis afte th cop ha bee made T d this yo ca us eithe th "C comman t copy followe b th "D command whic i tedious o combinatio o th "T" "M" "A" an th "E commands Th K). Not tha th "T comman automaticall perform "mov forward operation. T th righ o th "Tagge files messag tw number ar displayed Th number ar th tota size i K o th file yo hav tagge s far Thi i usefu if fo example yo ar movin file fro on siz o diskett t another smaller siz diskette I th sourc dis hold 500K an th destinatio hold 256K yo ca sto th taggin operatio whe you siz i jus l14: V Copying --> B0: BRUN .COM to A14: with verify Verifying --> file ok. Th i optional an i indicate tha yo wis t hav th fil verifie afte i i written. A yo ca see th file hav bee sen t driv A use 14 I yo wis th tagge file t resid i th sam use are a th sourc file afte th copy d no specif use are i th Mas command Thi wil caus NSW t pu th fil i th sam use are a th sourc file. tion Thi functio accept CP/ typ wildcar an proceed t ta al th file tha matc th wildcard T invok this jus hi 'W an yo wil b prompte wit th messag 'Whic files ' Ente an CP/ wildcard righ dow t uniqu filename an i tha fil exist i wil b tagge an displayed. Untagging files I yo ca ta file yo mus b abl t Unta fil a well. 9. B0: BASIC .COM 24K :*u Tagged files = 16K ( 16K). 10. B0: BRUN comman Erase tagge o untagge files a you option o globa scale. 12. B0: CDP1 . 40K : e Erase Tagged or Untagged files (T/U)? t Do you wish to be prompted (Y/N/A)? n Deleting --> B0: BRUN .COM I yo specif Untagge files th untagge file wil b erased Yo ma wis t b prompte befor eac fil i t b deleted an yo ca d thi vi th secon question. Squeezing and Unsqueezing files Th 'Q comman allow yo t Sqes tha 256K Th ta functio i itsel doe no perfor an operation othe tha t mar th fil fo futur "mass operation. B no th astut reade wil notic tha ɠ hav cleverl skippe ove th functio o th secon numbe display th on i parenthesis Thi numbe i th combine siz o th tagge files IΠ 1 BLOCKS I yo ar usin compute syste tha support man differen dis sizes/formats o syste wit har dis attached yo ma NSW wil no allo yo t cop fil t th sam driv an use are a th source Th cop i simpl no made. .pa After the mass Afte an mas fil operation th tag ar "reset a eac fil i copied Visually the chang fro "* t "#" Th file ar logicall untagged an wil respon a such But sinc NSWР remember them yo ca automaticall reta thes files Thi i usefu if fo example yo nee t cop th sam file t numbe o   ueez an Unsqueez tagge files Thi fil squeez progra i compatibl wit th origina squeeze/unsqueez program writte i th 'C languag b Richar Greenlaw After hitting Q, you will see the prompt: Squeeze, Unsqueeze or Reverse (S/U/R)? Afte answerin thi skill-testin question yo wil b aske whic drive/use yo wis t plac th destinatio files Th synta her i th sam a fo th Mov command excep i i permissibl t 'Q th file bac t th  b reset T rese al th flag (IE Chang t R/W DI an n "Syso tag") jus ente singl comm o spac a th "Whic flags prompt Not tha th flag i th "Whic flags questio d no hav t b entere wit comm betwee them a anythin (o nothin a all! wil do A fa a th progra i concerne "RSA" " A" an "R, A ar al valid. .pa Epilogue Al th function o NSW hav no bee described Th bes waactiv featur o th comman i genera i th abilit t Squeez file ONL i i i "worth it Thi mean tha b usin NSWP yo ca archiv dat int th absolut minimu amoun o spac possible Th S algorith use i NSW i bette tha th on i th origina squeezer an produce the smallest output file possible with current technology. Th fil squeeze sectio wa don b Ji Lopushinsky an i copyrighte separatel b him H als ha publi do o Edmonton sinc withou hi th S sectio o NSW migh neve hav bee completed Thank t th us o hi SQ section, NSWP can produce the smallest possible SQ'ed files. Contributions I yo like us an enjo thi program fee fre t sen contributio (sugges $20) Thi wil hel m expan thi program an ad eve mor features a currentl workin o CP/ 8 version an onc tha i running inten t por i t MSDOSsam drive/use tha they originated. .pa Whe i invoked yo ar aske i yo wis t Squeeze Unsqueez o Reverse carriag retur her wil retur yo t th comman lin o NSWP I yo selec fo Squeeze al tagge file wil b examine t se i i i "worth squeezin them File tha exibi AN spac reduction eve i i i onl on sector wil b squeezed I th file i no "worth squeezing th fil wil simpl b copie t th des t ge mor familia wit th progra i t actuall USŠ it thin i wil b on o you mos frequentl use programs. Ther ar severa thing i thi versio tha yo wil wan to alter 103H Thi byt control th scree lengt use i th "V"ie command I i currentl se t 23 (17H). 104H-10AH - Turn reverse video on Th firs byt i thi sequenc o seve show th lengt o th revers vide o sequence whic follow a locatio 105H Al seve byte armai standalone squeezer, call NSQ. Setting the tagged files status Yo ma se th attribute o grou o tagge file jus lik STAT o PROT T d this ta th files an selec th "Y command. 12. B0: CDP1 . 40K : y Which flags (1-4,R,S,A)? r,s Setting ---> B0: BRUN .COM to R/O SYS Th flag yo ma se ar th F1-F flags a wel a th Rea Only System an Archiv (MP/M CP/ only flags An flag yo d no specif wil Suggestion fo enhancemen ar als appreciated an yo ma sen the to: Dave Rand 10232 - 160 Street Edmonton, Alberta CANADA T5P 3E9 tinatio drive/user. I yo selec fo Unsqueeze al tagge file wil b examine t se i the ar squeezed I the are the wil b unsqueezed an move t th destinatio drive/user I the ar not squeezed, then they are simply copied. I yo selec fo Reverse al file tha ar squeeze wil b unsqueezed an al file tha ar unsqueeze wil b squeeze (i i i wort it) an move t th destinatio drive/user. Th mos attr currentl se t zero. 10BH-111H - Turn reverse video off Th firs byt i thi seqenc o seve show th lengt o th revers vide of sequence whic follow a locatio 10DH Al seven bytes are currently set to zero. Credits M thank t al wh mad thi progra possible an especiall t Dav Mccrad fo hi hel i composin th documentatio an .HL file fo NSWP Thank als goe t Ji Lopushinsky als  kNSWP is copyright (c) 1983 by Dave Rand 10232-160 Street Edmonton, Alberta (403) 484-4114!9"1=*."7.2.2. 2.2.2. 0ڱ2.-!]. `>?!" .".!^#6#6!M ͼr@Drive :.AQ:.<>*Q>? =__o&S2.@:!.]@ !" .#"+."-.w!=.͊}+h#" .!e2*.+" .#͈".!"."/."1.1=:.2:.d* .#}»@ No files.XL'SʪÀ9*.͈dG!!5~ȸ###^#V:._:.__1*-. 1 2 3 4 R/W R/O SYS ARC :9.AQ:;.< ::.o& G >:Q:.e @ with CRC.:D.z ʴ } z 6ʜ #* ., 9ñ @ --- Aborted ---ÀH. `~6`2:.d!I.o. ~ww# H.!I. `} !͈4~3 @ Retagging --> > Q4͌#* ., À"@(~#a QS @)~ Q#j ".͵ *."".*. v,­ *.:.U$ R$ *.:.Rʽ U !0͂#*. 0!H.n. 6`!w.~ 6Q#6Q#6Q@(!o.j >.Qu4~6#*1.~"1.*/.~"/.@ New drive/user/mask? @!!~ʀ#">.:\`:.<=2.:;.y#~*>y:.2.:] ‘!]^ 6?`!\. `992.~ʸV#ª2.@ Illegal drive code.Àͥ:.2;.:.29.~0ں:AںQҺA29.#~:ȷ*:0:'G#~:33036302;.x 2;.>2;.! !!^#6#p#~iwV@ Copy to drive/user? @!!~ʀ r#:D.::.G:;.ʧ:9.G:.@ Can't copy to same drive and user.À*.͈2H.I. `~2:.@ Copy to (€@ Tagging --> ͈> Q4͌#* .,J͈]N/> ~?\#Q*.͈ ~2:.@ New name, or *? @!!">.!l#~ ʀ ?#¡:;.¶::.w*.͈. r*.* .#" .e2*.+" .".,ڀ!".À:.29.\2\ `d:e9:e2e:u2u\:;._::.F__!mI. `2H.H.*.͊}ʒ@ Destination file exists! rÀ:;.ʢG::.::.___\__!m `::.__!\H. `2H.>?2T.*.H.͊}ʽ" .H.@K in #@ files. *+.@K free. u uBXSDTUVPEkL'CM A RcFWY%?Q *.#".* .,Ҁ!".9À*.|+".€9* .".À@ Which drive? @:!AڀQҀ :.GA2.9rw9*+.@K remaining on drive AQ>:Q9x2.rÀ@ Which flags (1-4,R,S,A)? @!o. 6#L!!~ʀ#">.*>.#">.ʊ!o. ʄ#w_>_> 1234zzzzRSA@ Delete file? Y€*.;À͈]2\ `6`__^_:e!@ R/O. Delej @)s*.!H.͘'}0!0D C @ Not a SQ file.">."B.:;.2;.!\n.6 `s!"| _h *B.,}0@ ERROR - Checksum error in file nngo͵ @ Premature EOF on file... aborted.À0*:9.G:.::.G:;.ȸ!H.n. `2n.!"@.sd*."5.:.–H.l"5.*7.,ܺCͺ}0 |g}o{))))))),*.*7.~y|±}ڳ.&],H.͇"5. ||¥ͺÖ͏ʀl&filespec)? @!!~ʀ#">.*>.ͥ:] > !I.] ~#4 :\=29.!I.]NT ͙!]I. 怶w#\ !\n. `:.G:9.ʅ  r À@ Squeeze, Unsqueeze or Reverse (S,U,R)? 2.S U R€> 2D.9:.2:. a!͈4~+Fƒ x2:.:D.O :.G:9.O ::.G:;.O @ Skipping, same drive & user --> à :D.s ʊ @ Copying --> Þ @ SQ/USQ --> Þ @ Setting --> @ to :D.) !o. ~ #» !w. ~  ~ # e ~Q# R!mI. `H.!)))))*. T.`H..ý@ Directory full.À<¨!=!o `*7.,@ OUT OF MEMORY?<¨i`@ Old name? @!!">.!.:. ʀ:;.2 .@ New name? @!!">.!n.:o. ʀ9!͈.¢@ Renaming -->  ~2:.@ to !mG:2#* .,R9>. r~ F: .?G># ɯ/o.m> ?te? Y:e2e\\_* .*.{ozg))))xV~# xL* .+" .*.,+".@ Erase Tagged or Untagged files (T/U)? TʤU€T>ʬ2 .@ Do you wish to be prompted (Y/N/A)? ʀAʀNY>¯24.!".͈4~G: .f@ Deleting ---> :4.W@ Delete (Y/N/A)? AzYfʃ;h#* .#}z+,!".À!".Ü ~6ʩ#*1."1.*/."/.*/.@K (*1.@K).*.͈4͌u@ Tagged files = *.͈͇ͩ"5.l:.@ Verifying --> R!z.{.6`n..!]~ ʀ ~ µ6?#­@ !/€".À@ Tag what? @!!">.!]~ ʀ@ !/  ~#=:;.::.:.AQ n&} 5 >:QyJ> Qͧ>.QͧJ*.#@. #~#> Q@K : ʢ*ʢ#yQ~Q#§9>2=.92=.<23.@Press ^X to abort, L to advance a line, cr to advance a page. >2<.*.͈ v,!nD*."".!0D D9!"L*.""."bnu>-_ ‚:3.<23.:<.O:=.O:3.G:OLʹlʹ23.O:3.=23.O0ÀO iiX!T.U.%# :.~#, *@.O!. ~W$^"@. @ ~#Q@ _{dldr_!u! ~#G~d#z))))= NSWEEP - Version 2.07 07/17/1984 (c) Dave Rand, 1983, 1984 Edmonton, Alberta $ A - Retag files | Q - Squeeze/Unsqueeze tagged files B - Back one file | R - Rename file(s) C - Copy file | S - Check remaining space D - Delete file | T - Tag file for mass E - Erase T/U files | U - Untag file## *.*.Fwx# |}!".".#".* ." .Q͟h*.".#".* .+" .|E*.͈*.`*.#".*.͈".*.͈". #•*.~ F. x:.?G># ɷ!"-.* .#}!=*-."-. x',?,$?d,2?} =?yRR> Q=G ] |S{0Q }0*0#*0~.Ҙg xʩ|-“#Ï}o|g:*.ʽ)=õ"+.:._.*:GxG|g}o ý^)))))#~&o)))%45 %%%#%!*p27,28,l*g2+2+<27,29, '>29,! ,,ͻ+&29,!,:5,͍+::,Nw:6,/< 'G:;, '4x26,&!$,,+!,:5,͍+~2:,:6,&w:9,#%! ,,6`H.2H. `~2:.d*.""." .H.<@ Can't open file!À__:9._:;._ :._::.^*."&."$."(.R"n.<:w.ʻ:w.2w."!w.E.`6$#6$#6$ ""<@ Destination disk directory full.À!z.{.6`dH.<@ Can't close file!ÀRn."Rn.<=m"!n.~.`!E..`n.<=!E.w.`:Q.G:w.2w.:y.2y.n.*(.*$.G,xw#"$.*$.*&.,R:. F - Find file | V - View file L - Log new disk/user | W - Wildcard tag of files M - Mass file copy | Y - Set file status. P - Print file | ? - Display this help X - Exit to CP/M | cr, sp - Forward one file $"x#"z#!9""c#v]#>2t#2w#c#"~#*x#n͝"Gp#Œ"<"c#"#]#c">*z#"|#|ʓ"c#s#r#c#s#r#*|#+h"1>*x#*~#a{_USQ section (C) 1983, 1984 by Dave Rand (403) 484-4114!9"":w#"=2w#:v####)o$#:*.ZK<}>o}}o}}o}#~#`a{_:._<ʀ0`:02*."0L L* .9ͩ9L*>.!\w=L!\*>.:. O0O:77:.Lx,yH,py2;.ͷr#*b6?dwQͷyh#6 r.¢ͷʢ#*’6?ÔwͷʩØ#6 ¢#6«">. =_.:;<> !.!yg)>g>!or$s+#%>26,:*!5,4!'>28,#%~!,͍+~2;,&! ,̈́,2+*+))>͍+ ,",!",!,͒+~w6#w#w#w͒+̈́,!+̈́,*+* ,ͨ+>Ґ'*,* ,:+ʡ'"D,!9",1,!v(*+(!͡+"+*D,#~ ')#'>.)x͍+~ ')#')*+())*+~)#z(2+2+>2+c+v(c+(!+Y(#45v(~6J(G+~(=(v(>(<(v(v(#4~(>(~6(:+2+((:+ʑ(>(<(>́+###(:+ʰ(G:+¨()>2+*+|>(*,((́+F#^#V:+O{_zW:+ ()2+(y2+},n.Y*$.,*&."$.*&.*$.~}yC#|N}P.],n.V͏%* .*".,ʂ~#"".d*.""." . :.H.¼* ." .—n*".* .,n= ,*".H.͏*"." .n͏ʀl&͇*"." .ü* .!==~V# `~##~#~  x$>[I* .".+|*.|ȯ|g}o".„#".* .+}o|g".!".*.".*.*.".*.*.}o|g".á*.#".*.,oÛ*.͈".*.͈". ~O#>==2w#:v#2v#:u#O:t#.#nŒ"O>=2t#yO*z#=###^#Vz#y2u#z>Z#{/|}nŒ"nŒ"go>2+"B,!9",1,*B,}o>͍+"+">,"@,&+2+W+#>Ð'vͨ+#>Ð'}2++|#c+?$!+$#456$~6 $G+~+#6$>+<+6$6$#4~#>+~6+:+2++#:+Q$>+<+*>,^#V#N#zl$#V$>Ð'~*@,w#s#r#q#"+>2+#^#V#N#~#2<,{$:+G*@,#ͮ+ڶ$####Ÿ$y2=,$*+y2=, }O|GT]+++:<,w#s#r#:=,w*+####"+:+<2+„$:+!*  )|:8,I):+*+*+G:+Os#r#}0) z:)`)%)"+"+y2+!+4~`)2+!+~w:*=Gp)>':8,~):7,¤&!*p:8,#%28,27,#%́+:+w#*++2,,+!"," ,,!,e- ,!,͒+:+!$,͍+4!+5:8,)*+6:+O})7zW{_~*A+~+}* *~)*s#r*+/w#6#"+}!+4>́+###!I*͗)*+>+w+,կ++ä,**x!+4#m the tagged file size. It is correctly handled in all cases now. NSWP now saves the SP, rather than (SP), in order to support totally non- standard implementations of BDOS and CCP. When using the '?' function, the current disk information, along with the tagged file size. The copy file speed has been further optimized by elimination of a redundant BDOS call (deleting a file, when we know it ain't there!). NSWP has been modified to better support MPM and MPM86 by doing a rename after a copy------- NSWP 207 has the last of the CPM 3 features, and concurrent as well, this being the multisector IO feature. This speeds file transfers under these operating systems by at LEAST 1.5 times, and it even handles physical IO errors whilst doing this. Also, the copy command has been alterted so that if you copy to a DIFFERENT drive, the disk system is reset. This will permit fast copies to the same diskette, and the ability to freely change the destination disk! 4#4#4++*o&))*>,4#4#4ɯGO*>,w#w#w#q# ,+!+w#w#w#w#!+++!"+c+oc+gnk+*+͍+"+!+4#4#4*>,G͍+x͍+xo$շ#•+}o|g|}##~+~+~H + +x ~#+x ~++yxX+G]T~w+”,kb ,xG-"L-"N-Hi&)))#"T-!W-^-Aw#,!W-"P-!^-"R-*N-A#,C-A*L-~w#,!T-5,#5G-* operation. This will drop the copy speed slightly, nullifying the effect of the above change. If you find anything else, please drop me a line... Notes on NSWP 205 ----------------- NSWP 204 introduced a bug that would not allow you to copy a file if that file was set to R/O, unless you had a destination that was ALSO R/O! Notes on NSWP 206 ----------------- NSWP 206 has further CPM 3 features, such as using the display-and-return error mode. As well, NSWP now fully implements the $$Dave Rand 10232 - 160 St. Edmonton, Alberta Canada T5P 3E9 (403) 484-4114 04/04/84 Notes on NSWP 204 ----------------- NSWP 204 has a few new features! First, limited CPM 3 has been established, in that if you have BDOS version over 3.0 (which may include MPM), you may now run with ALV banked. NSWP will use the BDOS call to obtain the ALV information. This also applies to the 16 bit version. Before 204, if you attempted to delete a file that was currently tagged, it was not removed froP-A~w#-y2V-*R-DM*P-*N-#:V-=2V--?,*P-*R-"P-"R-,7H-*P-xH "-!- "-i`)))#"-A!-6#„-A*-+~w-kbA+~w›-Һ-*-!-Aw#°-!-5Œ-#455Ì-$ copy file techinque, for both regular and SQ/USQ file copy operations. This will permit the use of 'PUBLIC' BDOS patches, and full use under MPM, as well as concurrent CPM 86. You may now log directly to a drive/user from the CCP, by using the syntax NSWP A4:*.*, or more simply NSWP A4 . NSWP now uses the same routine for CCP logon, as it does for the LOG command within NSWP. If you have selected a group of files (*.QQZ, for example), this information is displayed at logon. 07/07/84 NSWP 207 -   NULU.DOC Documentation for NULU.COM as of 10/01/84 Version 1.0 NULU.COM and NULU.DOC are both Copyright 1984, by SYSTEM SOLUTIONS, P.O. Box 35972, Dallas, TX 75235. Both may be used freely for non-commercial purposes, but neither may be sold, included in a package for sale, or used as an incentive to buy, by any person, organization or corporation without prior arraULU will run on any system running CP/M 2.x or higher, however it has only been tested on the Osborne 1 and the Osborne Executive computers. It is written entirely in 8080 assembly language. A complete discussion of the nature and advantages of library files is beyond the scope of my endurance, however a short recap is in order. A library file is a single CP/M file which maintains 1 or more smaller files as its members. Each file is written into the library andwith an option to unsqueeze where appropriate Bigger libraries, up to 800 members or more depending on available memory Automatic member sorting, all members kept sorted at all times Faster reorganization Enhanced error handling Access to deleted members Optional read only mode General compatibility with LU and NSWEEP syntax Numerous user patches DIFFERENCES BETWEEN NULU AND LU I am aware of only one thing that LU do one file. However, there are also dangers associated with using libraries. The main one is that if a library file is lost or damaged, all of the member files are lost as well. The solution to this problem can be summed up in one word: BACKUP. NULU probably isn't perfect, and we all know that disk systems aren't, so backup your important libraries, please. I don't want to hear any sad stories. Almost as important as backing up libraries is the use of discretingement with the copyright holder, SYSTEM SOLUTIONS, or the author of this version, Martin Murray. Furthermore, neither SYSTEM SOLUTIONS nor Martin Murray will bear any responsibility for losses resulting from the use or inability to use this program. NULU.COM may not be distributed without NULU.DOC, nor may the copyright messages be removed from either file nor caused to not be displayed. ACKNOWLEDGEMENTS This program would not have been pos recorded in the library directory. After that, it may be accessed for viewing, printing, or execution, or may be extracted from the library to assume the status of a stand-alone file once again. The reasons for doing this are many. For one, under CP/M each file occupies a minimum amount of disk space. This amount can range from 1k to 16k, depending on the system. Even though a file may only be 1 byte in length, it will still occupy the minimum required amount; oes that NULU does not do. LU maintains a CRC for each member file and for the library directory as a whole. NULU doesn't do this at all. In fact, NULU changes these CRC bytes to 00 as soon as it gets the chance. In case you still want or need to run LU on a library modified by NULU, LU will simply regard it as a library created by an earlier LU version and will promptly set CRC's for the various members. NULU To the best of my knowledge, Non when deciding what to put into them. Let's face it, if a file is in a library it is not as easy to get to. If you need to get to a file every 15 minutes, it probably shouldn't be in a library except as a backup measure. AN ASIDE CONCERNING FILESPECS When specifying a filespec, wildcards may be used freely, however, unlike most programs, NULU doesn't insist that a "." separate the filename from the filetype. For example, the filespec "**" sible were it not for the elegant work of Gary P. Novosielski and those others working with the LU library structure. INTRODUCTION NULU is offered as a complete replacement for LU and LSWEEP. Weighing in at 14k, it includes nearly all features of both programs and then some. It features: Two operation modes with a full menu for each Viewing and printing of member files, unsqueezing when necessary Extraction of member files the rest of the space is wasted. Putting these files in a library minimizes the possible waste to 127 bytes. Each file also occupies a directory entry. On most floppy disk systems, the maximum number of files per disk is 64. By including a file in a library the directory space it used to occupy is freed for another file. Additionally, using library files can simplify the process of categorization by subsuming several files of similar types or subjects int   means the same thing as "*.*" to NULU. On the other hand, the filespec "FRED.TXT" should be typed in just like that. "FREDTXT" would make NULU think that no filetype had been specified. The rule is simple: use a dot any time you like, but it is only strictly necessary when it is needed for clarity. When specifying a drive and/or user area the syntax is very liberal. "A15:**" means the same as "15/A:*.*", as does "1A5:**". The colon is absolutely necessary. If a  after a parameter indicate infinite repetition. COMMANDS -A ADD MEMBERS Syntax: -a filespec[ filespec...] Use this command to add files from disk to the current library. NULU will make a series of passes through the directory, adding files as it goes, until the list of matching files is exhausted. If matching filename already exists as an active member in the library, its nep mode -G Get filespec -K Krunch the library -L List members -M Menu -N Rename members -O Open a library -P Print members -Q Unsqueeze members -R Replace members -T Replace/Add members -U Drive/User change -V View members -X Exit NULU -Y Disk directory -< Redirect input -> Redirect output Commands may be strung together, each terminated by a s directory. The library directory is NEVER written except when the library is closed, so be sure to do it. If you forget to do so and remove the disk, NULU will prompt you for the disk again and will attempt to recover, but no guarantees! Some other operations that cause the current library to be closed are: -k, -o, -x -D DELETE MEMBERS Syntax: -d filespec[ filespec (filespec) different user area is desired for the default drive, the drive specifier may be omitted, as in "15:**", just as the user area may be omitted as in "A:**". If a drive/user specification is made, but no filespec is indicated, a filespec of ????????.??? is generated. Therefore to indicate the default drive, current user area, and a filespec of ????????.???, just type a colon by itself (e.g., ":") ! NULU OPERATION NULU may be invoked with or wame will be displayed and the file will not be added. In all file addition and replacement operations, if a deleted entry of identical size can be located, that disk space and directory entry will be used rather than allocating new space for the file. This means that it will be necessary to reclaim wasted disk space less often. -B BRIEF TOGGLE Syntax: -b This toggles the prompting mode. The relpace. They are processed left to right. All characters are converted to upper case. The default drive/user area are displayed along with the name of the current command mode each time the console is prompted for input. The commands will be explained in order of their appearance above. All items in [square brackets] indicate optional parameters. Filespec parameters enclosed in (parenthesis) indicate references to deleted member files. Three dots ("...") ...] Member files matching the given filespec will be given deleted status in the library directory, except when the filespec is enclosed in parenthesis. In that case matching deleted members will be given active status. That is, they will be undeleted. If the filename of a matching deleted member file already exists as an active member, the filename will be displayed and the file will not be undeleted. ithout a command tail. A command tail can consist of any combination of valid NULU operators up to 128 characters (the limit imposed by the CCP. Once NULU is running, command lines can be as long as 254 characters.) As in LU, all NULU commands are preceded by a dash. This is a copy of the menu for the command mode of operation: -A Add members -B Brief toggle -C Close the library -D Delete members -E Extract members -F Filesweease version of NULU is setup to print the full name of the current mode for a prompt, as in "-ADD MEMBERS A0:>". If BRIEF is turned on the user will simply see "-A A0:>". NULU may be permanently patched to default to BRIEF ON or OFF. See NULU MODIFICATION. -C CLOSE THE LIBRARY Syntax: -c This command closes the current library, writing its directory to disk if any changes have been made to the    -E EXTRACT MEMBERS Syntax: -e filespec[=newfilespec filespec...] Use this command to extract active member files. If extraction to the current drive/user area is desired, no further syntax is necessary. To indicate another drive, however, a destination filespec may be included following an equals sign. Example: -e **=a5: would extract all active members to drive A, user area 5. F only a short description of each command will be given. A -- Advance to next member (spacebar, cr, or lf will produce the same result) B -- Back up to previous member C -- Close the current library D -- Delete current member file E -- Extract current member file (prompt allows redirection) L -- Logon to new library (closes the current library) P -- Dumps the currasm=*bak" is valid while "**=*bak" is not valid. -F FILESWEEP MODE Syntax: -f This command places NULU in its second operational mode: the filesweep mode. This allows the user to move through the directory of active member files as if they were individual files being examined by a program like NSWEEP. The filesweep mode's command list is as follows: A Next member B as been closed, there is not a library currently open, the filesweep mode will prompt with: No library open. and will accept only the following commands: L,U,X,Y,Z,? Likewise, if a library is open but only has a directory with no other active members, the message No member files. will be printed and only the commands listed above will be accepted. During the filesweep mode operationiles may be renamed as well as redirected by indicating a filespec along with, or in place of, a drive user specification. Examples: 1. -e *asm=*bak 2. -e *asm=5:*txt 3. -e fred.txt=sam.txt jane.inf=c8:girls.dbf The examples would produce the following results: 1. Extract all files with a type of .ASM to the default drive/user renaming them with the filetype of .BAK. 2. Extract all files of tyent member file to LST: (unsqueezes if needed) Q -- Extract current member file, unsqueezing if necessary (prompt allows redirection) R -- Rename current member file U -- Change drive/user defaults (returns file pointer to the top of the file list) V -- View current member file (unsqueezes if needed) W -- Wildcard rename of members (prompts foPrevious member C Close the library D Delete member E Extract member L Log new library P Print member Q Unsqueeze member R Rename member U Drive/User change V View member W Wildcard rename X Exit NULU Y Disk directory Z NULU command mode ? Menu Because of the extreme similarity between these commands and the commands of NULU's command mode, , each file will be listed in the order in which it is found in the directory, along with the size in K that the file would occupy if it were extracted to the default drive. If the filesweep mode is terminated by a return to the NULU command mode, any commands that followed the -F command on the previous NULU command line will be executed. -G GET FILESPEC Syntax: -g filespec Npe .ASM to user area 5 of the default drive, renaming each with the .BAK filetype. 3. Extract the member file FRED.TXT to the default drive/user under the name of SAM.TXT, and extract the member file JANE.INF to user area 8 of drive C: with the filename GIRLS.DBF. The only rule to remember is that if a destination filespec is entered it cannot be any less ambiguous than the source filespec. That is, "*r both oldname and newname) X -- Exit NULU (closes all files) Y -- Get disk directory for default drive/user (returns file pointer to the top of the file list) Z -- Return to NULU command mode (current library remains open) ? -- Print the filesweep mode menu (returns file pointer to the top of the file list) If, when the filesweep mode is entered, or after a library h  ULU will search for the filespec indicated. If it is found, processing continues. If not, the user is prompted to insert the disk containing that filespec. The drive is then reset and search again. The program will prompt forever until it receives the proper filespec or until a cntrl-c is entered, forcing NULU to continue without the filespec being found. This command can be useful when attempting to tain the currently active members, the number 1 or any number less than or equal to the current number of active entries may be entered. If the optional parameter listed above is entered, it will be used as the number of entries. (The KRUNCH processed may be aborted here by typing RETURN or 0. Please note that the library directory counts as an entry and will automatically be accounted for by NULU.)  ASM.LBR back so it could update the directory. Therefore the GET operation would be effectively negated. -K KRUNCH THE LIBRARY Syntax: -k[ REDIRECT OUTPUT Syntax: -> filename Syntax: -> With the first form of this command, NULU output will be sent to the filename indicated. If the file already exists, it will be deleted. All special characters   oblem: This means that you entered an ambiguous filespec where an unambiguous filename was required. ERROR 68: disk full Problem: The library disk became full during file addition or KRUNCHing or the destination disk of an extraction command became full. Solution: If the error occurred during KRUNCHing, NULU should have recovered by itself, reopening the old library. If it did not rec An attempt was made to run NULU on a system with an CP/M version number of less than 2.0. ERROR 88: seek to unwritten sector Problem: A sector required to gain access to a file is indicated by CP/M to be unwritten. Solution: The library directory or perhaps the library itself has become trashed at some point. Deleting the entry and KRUNCHing will probably render it harmless, but the saf NULU MODIFICATION) or a letter higher than "P" was indicated. Solution: Choose another drive or re-patch NULU. ERROR 77: not enough memory Problem: An attempt was made to open a library with a directory too large to be accounted for with available memory. Solution: Open the library on a computer with a larger TPA and reorganize it so it can be handled by the smaller system. ERROy to help. NULU MODIFICATION Patches will be listed in the order in which they appear in NULU.COM. Each patch is explained and the default values are listed immediately next to the patch address. All addresses are absolute hexadecimal. Patch Default Explanation 00171h 00h Non-zero makes NULU use the Z80 instructions LDIR and LDDR for data movement. over, then you removed the original disk before the KRUNCH was complete or a serious read error occured. If the error occurs during file addition to the library, operation should not be impaired, but no files that required additional disk space can be added to the library. Note that deleted entries can still be overwritten by incoming files as long as the file est course to take is to obtain a fresh copy of the library. ERROR 100: bad library directory Problem: The file specified could not be opened as a library file. Solution: The directory could be bad, but most likely the file simply isn't a library. Check it out with some disk editor like SPZ or EDFILE. ERROR 115: bad syntax Problem: Improper syntax was user to attempt some operation. ERROR 116: sR 78: user cancel Problem: No problem. NULU is simply letting the user know why an OPEN LIBRARY or KRUNCH operation has been cancelled. ERROR 83: no directory space Problem: An attempt was made to create a file on a disk with no free directory entries. ERROR 85: file not found Problem: The filespec indicated for some operation could not be located. ERROR 86: CP/M 2.x or higher required Problem: 00172h 50h Number of characters each full video line can contain. Not necessarily the same as the number you can see. 00173h 50h Number of characters visible on a line at any one time. 00180h 10h Number of contiguously numbered disk drives in your system. If you sizes match. The original file that caused the error will be recorded in the library directory as a deleted entry. If the error occurs during file extraction or unsqueezing the destination file is deleted because it is an incomplete file. Extraction can continue as before. ERROR 73: invalid drive Problem: An invalid drive for your system was chosen (see below,queeze decode table Problem: A file has a squeeze decoding table, but at some point the table is trashed or perhaps is missing. Solution: None really; get a new copy of the file. ERROR XX: undefined Problem: Unknown. Solution: Write down all information presented on the terminal. The number following the word ERROR is especially important. Get the information to me. Mail it or call and I will tr   have drives A and B, set this value to 2. It will prevent you from accessing an invalid drive. 001c5h 00h Set to a non-zero value to make NULU READ/ONLY. No operators will be executed that could change the library directory in any way. 001c6h 00h LU.COM was set up to  available for text...not a byte more. The 40th byte is for the null terminator. 03103h 0ah If you have trouble thinking in decimal, you can change this byte to get NULU to output all numbers in whatever base you please, from 2 to 24h (36ally executed when NULU is loaded, even before any other parameters passed on the command line. This might be used to create a version of NULU that, after loading, sets the drive/user defaults to B0:, prints the menu, scans the drive for library files, ontrol. The attributes are, in order: DIM or REVERSE VIDEO ON (DIM is preferred) DIM or REVERSE VIDEO OFF UNDERLINING ON UNDERLINING OFF CURSOR POSITIONING (not used in NULU) CLEAR SCREEN Each control becomes active as soon as it is patched in. Likewise, there is one string defined for the LST: device that will be issued immediately before printing a file. It begins at 038adh and has the same format as the strings above.  exit automatically if a command tail was used when LU was invoked. With the release version of NULU, it takes the -X command to exit. Set this byte to a 01h to get it to act like LU in this respect. That is, it will automatically exit after d). 03825h 0005h This is the address of the BDOS vector. All operating system calls go through this address. If you have some weird, non-standard CP/M implementation you can patch this to try to make NULU work with it. 03876h 3ch This is the number of lines that NULU then switches to the open library mode. That command line would look like this: -U B: -M -Y *LBR -O Notice that all characters in this line MUST be UPPER CASE. The entire line MUST be terminated by a null byte. Only 39 bytes are  FINAL NOTES Please report any bugs or problems to Martin Murray, P.O. Box 35972, Dallas, Tx 75235 or call (214) 351-6117. Donations will be gratefully accepted. It took a lot of work to produce NULU and if you enjoy it and it benefits you, don't hesitate to show your appreciation with a check!  executing the passed command tail, if one was present. 001c7h 01h Set to a 00h to start NULU with BRIEF mode ON (long messages not printed). 001c8h 00h Starting here are 39 bytes in which any valid NULU operators may be stored. This line will be automatic will print on each page during member file printing. Change this value in accordance with the line printer patch below. Starting at 03848h are 6 data areas used to define strings needed to control the console attributes. Each string is preceded by a byte indicating its active length. Then 5 bytes are available for each definition. Therefore a total of 6 bytes is consumed for each video c  F NULU 1.1 (02/01/85) Copyright (C) 1984, 1985 by Martin MurrayUPPF D!9"2*L&###:MO *<"!9*ODM) "<+ã-OWORK-LBR.$$$ NCF NOF LBR Add membersBrief toggleClose the libraryDelete membersExtract membersFilesweep modeGet filespecKrunch libraryList membersMenuRename membersOpen a libraryPrint membersUnsqueeze membersReplace membersReplace/Add membersDrive/User chang*3! yʷ͸: "4 <"D 2v <"U *3!F13.>4!4&-.."5!m 4>  7>k2s 13 : C3O5ABCDEFLMOPQRTUVWXYZ? x y;!1:*4 # *4 +} * ð Á 13elete?2- *D Õ ͧ%!3Deleting: %:>OI> &13xtract to: \- 6 - 13ind what? \- O >*w#w#w%- ͏%BK͸:K *  13Log drive/user: \ʁ "5͹Á >*!3Delete, Extract, Print, Unsqueeze, or View (DEPQV) Enter one: C32+ O5EQDPV- y;# !3Destination drive/user?13 closed. 2:<Į*~-#~Gx<*6élS! -!3Console input to be received from >OͿ'ʎ:2,2*ZéI6l:*ēIV! !3Console output to be sent to ͮ*2̈́9*3>KͿ'Iʔ2:<2<ͩ!7l!S1>UI!",!3Press ^C to stop...ͮ*:\!- = ,:*\*+̀.u!3Deleting: ͵->PD16*,#",6l*5% :Hʜ\I%I͂8I!3Undeleting...͏% !3 ͧ%%*%*%*%..%"%"% 13 cannot be und"͕"!+" } ͷ3!" !" 6:,2&>D4O*5> Hw# C͔>4&2͚9ͳclosed. 2!ó7!3CONOUT file 13l!3 Krunching...* ̈́9;$`i""͂8ͽ<͏%4&#x<͂88G+!-!<͓7Vͮ*D1>͆3!-13will be krunched to >W\3>͆3*3ʎ!"ͧ%"\"!!V1!"."%!<":}"*%}:13 CRC ERROR-Continue?2}!}+"!3 Copying: !#" &#!eView membersExit NULUDisk directoryZap disk filesRedirect inputRedirect outputREADYNext memberPrevious memberClose libraryDelete memberExtract memberFind memberLog new drive/userMass operationsOpen new libraryPrint memberUnsqueeze memberRename memberTag memberUntag memberView memberWildcard renameExit NULUDisk directoryNULU command modeMenu?DIJKMNOSUVXdktsambiguity errordisk fullinvalid drivechecksum errorCRC errornot enough memoryuser cancelNULU is READ ONLYcan't make f \\b,I- ->:;#6H >D7 # 4&.."5$ # :+ Dʕ - 13Library name: \ʁ "5SÁ - 13Unsqueeze to: \- - 13ename to: \- <Õ 5* >*"22 13 Tagged = F>k;æ 5 :> - !3Old filespec: \- <<O_<"5!3New filespec: ë a Á I8!"5!"̀- >!/45C3O5LOXYZ?y?{ { ͥNULU Filesweep Menu>͆32 2C>28 !\%> 2 No members. g÷No library open. g'313+9 !eleted--name existsþ &þ8~(#>);6 +6>2H:X jX x<6:S2S> ͦ;2 2 Iz } !܆3~;>܆3# y½ >=2 *3>2 Õ 13 | Õ ͽ21M2:R;=*3/*3M2ú0e#?!:2H<2ɗ2[ l̈́9**5>͚9I*5"J*"P!"̀/!"4 >O2# :*8:*;$yʷ`i#" " ͂8@ͽ<͏% s#r#6 #ͧ%:=P7s#r#ÿ ͂8@8!"*4  x<"$_<-ͧ% s#r###"`&M+>5+͡(5+y*!"!!"IMŸ*,DM!"\>Oq)}*,"(.4ʟI&2* ̈́913Krunch aborted...reopening old library>K2# *5!"5S"5ͩ8*I}*,DM*\>Oq)}\D1G+!>:;#>.5 213 krunched.ͩ8!"I*3IL% >N!͆32>-2C>28m!%>?2'3313 >͆313Sͮ*M2͘2ͺ0é2>/*>G+*<-V1Cannot find ilefile not foundCP/M 2.x or higher requiredseek to unwritten sectorno library directorylibrary directory CRC errorsqueeze decode tablebad syntaxundefined <".=}1-<:I!"{_Tm<k V>VI2*#"<"!r+s22ͺ0!N#=_< 6!"5>2yʛ:2S͂" ÛABORTED2l*5>u!I͞2$%;$>2$%!313 <>D4:<2*3" 2$!#" ͸:<>2 #N#F<*4 ##~" #<**5"]*<"5*͇5!"5*>"#;}6#"?O:# ʂ2y2# 5BCFKLMXY>y5'":;HJʂ:ͩÂ" ͩÂI3 lͩSͮ*921Insert disk containing !3 and press RETURN̈́9͚9!="5"!~6‚>!3-::# ʟ5ABCDEFGKLMNOPQRTUVXYZ<>?O!͚7͓75(5â;> ;b>:\313:>>X*5::*|&n5]7 Â!͇5"*528>*7:  !3Replace it and press RETURNʤ1®*:# 5KOX©!3NO LIBRARY OPENéSͮ*! $ʲ213 open. (Buffer size: *,* ,:>͖:F13 sectors)ͩUI:>UI!<> 5(513 not found. To make it, enter the number of entries to allow.!"!3 Press RETURN now to abort making the library. Allow how many entries: I~~<~#(5É!> /4ʑ}4}>NI͸:ڪ͸:ҼDM!=;6#D<"l33> b3: *\&F13, Total: *%F13.ɗ2<>OͿ'!"Z&"^&"\&(~ #~ P###<<"&))j&"%"!9" ͚9;*<>Ϳ'>m:͸:!"+{DM>O!(*+",%{:>kI*+ ~B& x:+ >M&>d̈́9&%:+2^':͏%͡(g I!H'"{/" !͏***"L'*+ ."I'Ž tIû *+:"(13---> !<(5**:>tI!*/" !o!:!>͆3!3^C=abort,^X=next file,L=next line,=next page>r*+",&*$M¹<ͽ<>KD1*&>M ͺ02"!3Library: ̈́*!3Name Index Size KiloBytes CRC2$%>!%"<͏%,ͧ% xͶ>͆3!3DIRECTORY >͆3Û*3%>3ͭ>3ͭ>3:=P7ͭ>3:<>2<*%<4>0 7(52<Û"<*U%jͶ*f%ͶͶ>͆3!3Active sectors !3Unused !3Total <2$%>͆3ͳ(5<4> 72w:+2^'՗%<͂8< =b,%\BKJ.%ͮ*!3Extracti<2m%\b,ͽ^%!#"N%!"U%l%!#"_%!"f%&%s#r#&%"%DM"%y>U!|+"%!^#V#"%!:<*,DM"a&4&"%<~ <<<"%"d&"g&%-*+ " &6#6*,DM;"4&>2<~!Z&&&<##&^#Vr+swB&+>͇:*+!Z&Q&<##G&4W!A9 p9~<͠&7#|&xʝ&~͠&ʞ&# Ì&<͏***w:<&**+|&''<*+#"+<<&>&͏*<'< ':***5% :H 33I!3Library '322'3O>?>4B*3>;y;> ;(5#:222+:<2<*3(52;*D4ʚ*5͇55~:Úͩ*6" :*ē*3>M2>2:.=1m<*P ͓7*2</<!"*P D<2}.q͓7*2bk.s#r.l*5% *<͸:>sI:HB$I>Oó>Ró:>OIé!3Brief now O:2š>N;73FF:<2<:# 5'":BHIJLMOUY<>>>?2# G+*<-> 5(5͂" >7 5'":;ABCDEFGHJKL3>2*!*3!!! !I; >=2*!o!A!:2*!> b3C35 LA!!V!:`!e!j!<`!>,!>,! :<2" =b,! ="<+!*$-!",}2":>#!"$2$%#>#*,#", =!*$ ,6#̓<=$!!*$>.;#$!Õ!!"$#*3%1"<"$$1">Oc"Rc"%13 already exists--not added.Õ!:"Rc" =͵-13 not in library--not replacedÕ! =Ͷ.Җ"͵-13: Cannot add an 8 megabyte file!Õ!"#$> &<$͏%"ͧ%"#*#:¤"L#*#>D"13No room for:  =͵-< #*\&}>f #13No directory spang...!H'"{/:^'*:%͏%$. <8!3 ͧ%*%-\13 to `&<͡(`I&!H'"͏***"L'*+ "I'><´."I'tIô*+:"(!<̓<**:>tI!*/"͠&÷&:^'**,*%}:>KI\b,BK! =J.I&\92͵-!<->K;Ϳ'I* ̈́9:<&%*,>͖:!DMq)(&1G+92M2M2%!3Deleting...͏%<ͧ%!3 %y–> &͞p> &p*%+">2< *+"!6A !3Active entries: *N%F13, Deleted: *_%F13, Free*;''2+͝+*+8<<*+DM͙.G+*+s20>D¹*͡(*+ "I'͏***"L'>*H'¹<>*+DMͧ' '*ʤ'!Ì'#"+*+͸:>Rڽ'*+ ~ɿ2^("D(`i>ͥ:>͇:"'(:+**+:NG~'#'>F:N<*;*94PY: (>͖:>͇:$(>$($(>MDM:1(BK*<*+s#r`i" ,͝+!:^(=$xe-*+* ,*+͂8*G+!$>;:+*>2+:<2<* ,DM*+ɷʷ("("(`i"(!",{*,!>O("(*(:"(U+M¹<+")"8)!"1)OM+PY* ,:MNOPQRTUVXYZ<>?:*͠&n>*u3.z6 i O5n<Sgb? a 6  \ S u { :CV <  "\b,:ͥ:"))j&*!;>PͿ'>2<͇:͸:'*}+ !.͋&" *+6s#ce for: "*$"#*%:L#*#$> &•!2"IÕ!*,+}>U>2$%!\"<+$e#13Replacing: t#13Adding: "# &! =͓7̓<͵- q#p###"## =1*,DM!"#>5+͡(5+#¹<"<*#>Oq)"#*#"##õ#!> &q#p<$͏%ͧ%͸:#"$#!+|#ͧ%!'$.7LBR!<%% =b,\J.%͂8!3Renaming...͏%$!3 ͧ%*%! =J.*%*%`i..%"%"%$-13 can't be renamed--new name existsq$<2<-13 to ! _<-q$%8͞  L)>͖:|>Mg)DM*+s2G+!#")̓21Q)_+g2!#"1)!+"8)|c) x^))>Rg)>X*)+")d)>Md)͖:|>L)DM*+s2G+!#")̓2 1)g2!#")!+")|) x)â)>R)>D*)+"))>L)<*<*+:DM*)*)#!"+*!"F*͏***>͖:|>M͆3>2R;*313*313 (5(5:ð7<<*<#" ;3:<2 ; 4*L4++"L4D4##"L4O:L!=#6+qY4w <^#6{<<4(5՗24D<42"54:t/!]/>>/=22/>m/Y/m/P/>==22/:O>„/ʾ/O>=2t/yO!ғ/##^#Vzs/y2q/zʭ/{/*a/:>ʾ/>J<1@2/@@0<13Drive : Total *=]T*=#zW{_0+/:=0)= 0F13k, Used :F13k, Free F13k<<:.=1{0*<*͖:<ͺ0<*=#ڗ0W+|ʦ0ʌ0zÒ0`i:=ʵ0)=°02h9bk"^9<>=2V9!##"^9><<;*9}: :<*9:ڕ9"9<>M!"9շ9_29DM99ʱ9W:929ñ9!9>՗2:>x:xGyO99!:4)=9:>y"Q:}|B:3333xD:՗yOxG{_zW:z[:}o|g!"Q::*Q:<`i͇:DM`i͖:DM͇:}/o|/g#ɷ}o|g=È:|g}o=×:|g}oҳ:#=æ:PY:}o|g>7<>N~w# x:<_ <<<ĝ+2+{+ȷ>u:NO+*< ͂8+*+O:N+>B+!+ "+!++ "+<"+4 "+!"?,!s2b,<͘22\,3,<ʷ2O!+"?,}1,y!O #b,><÷2:<2Y-> 2<2<20-22S-! >  ;_<>:;,6#}4ʸ,|¸,:Rg}Ҹ,2S-~,6#ʹ,@O:Q$-y,1 ~#*,.,-,?y->,,x :|4{0:5!w#"56~e;#5~<#)5+ ʀ5 ʀ5:<`5G:R;`5> ;> ;T55:<5G:R;55> ;> ;55~#;)5+ͽ5"5=~ʮ5ʬ5#Ͳ5ʕ5ͽ5y~5 #Ͳ5½5<7O;D÷2͘2!s2<<÷2<<<͘2<<>S÷2͘2<<>U÷2͘2\$_< _<mx<\<<>U÷2=w:%<<_:Qc2<<<<*< s2"<<<͘2!!s#r#6ý2222!#~2~w"2ý22>2!w <<_ <<1<13 (y/n)y;͑< ;;_:<< Q; Q; U;Q; <:R;= GU;>G:J^;x2R;< _~;͓;:;=ʁ;o;͕; ʍ; >2; ><2;:<<W:K ʽ;ڼ;ҭ;ý; yI,-=>C-> ?bk#;y2;!#>w>2<7#ͰPD11Kʒ-2-1>Mʱ-1!<-(5ɗ-> !<->:;#5(5͘2:<> 2<2o&1@w#4D< 6:#x<6.#x<62<÷2# >._<~> 2z.#~?h.?g.2z.~=T.#PYx<>?< #~?ʒ.<….<`i|g}oҫ.# ."<1͘2#<# .+V+^<ý2<v͸: /2t/22/<"/!"a/<*72"7ͽ<͓7<=/;x<<Ͱ<297x>U~̰Mڡ8*9*O:¦8>TDM#"9*!9 w#s#r9ͽ<"  2/1/85 Please let me know if you work with libraries that have in excess of 200 members. I am seriously considering some future NULU upgrades that would limit the maximum library size to somewhere in the range of 150 to 200 members. However, if there is a sufficient number of people that use libraries larger than that, I will recant. Thanks, Martin Murray P.O. Box 35972 Dallas, TX 75235 (214) 351-6117 EVENINGS AND WEEKENDS ONLY!!!!!!  ; Mead, WA 99021 ; Northwest GodBout/CompuPro RCP/M (509) 624-6799 ; S.M.U.G. (509) 624-7321 ; ; ************************************************************** ; * 01/25/85 Revised for Version 1.1 (kwa) * ; * 12/02/84 Added EQU's for Patch ORG's (kwa) * ; ************************************************************** ; ; See NULU.DOC for further information on the following values. ; ; true equ 01h false equ 00h ; patch1 equ 00149h ;Z80 instructions, Number d CP/M 2.2) be sure to put your BDOS location in at 3825h with DDT or EDFILE. It is default set to 0005h which is the standard BDOS entry point for standard CP/M 2.2 If you do enter your BDOS at location 3825h it must be done in reverse order. example: BDOS is D406h, it must be entered as: 06 D4 Location 3825h would be 06 Location 3826h would be D4 Steve Sanders (Sysop) DATA COM NETWORK RCPM SYSTEMS #1 & #2 (813) 937-3608 (813) 937-6829 s. See NULU.DOC for details ; db '-O',0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0 db 0 ;Terminator...Do Not Change org patch5 dw 5 ;BDOS vector (See Doc) ; ; The following routines are for a TeleVideo 950 terminal. ; Change to suit your terminal. Use This Format: ; ; ID byte,Number of Bytes,byte,byte,byte,byte,byte ;7 bytes total ; Do Not Change The ID Byte ; org patch6 db 1,2,27,41,0,0,0 ;Background Mode ON db 2,2,27,40,0,0,0  NULU10.MSG ========== Just a couple of things to remember when using NULU10.COM ******************************************************* ** K A Y P R O U S E R S ** ** ** ** USE DDT OR EDFILE TO CHANGE THE BYTE AT LOCATION ** ** ** ** 00171h from 00 to FF ** ** ** ** THIS MAKES IT USE THE Z-80 (KAYPRO) INSTRUCTIONS ** ** FOR DATA MOVEMENT. THE PROGRAM WAS WRITTEN IN ** ** of Characters etc. patch2 equ 0014eh ;Number of Open Files etc. patch3 equ 00151h ;Number of Contiguous Drives and Users patch4 equ 00187h ;Some Toggles and Storage Area patch5 equ 01944h ;BDOS Vector patch6 equ 01a60h ;Terminal Control Area patch7 equ 01a83h ;Number of Lines for LST patch8 equ 01a86h ;Printer Initialization Area ; nl equ 03 ;Nesting Level for NCF files org patch1 db false ;Use Z80 instructions for Data Movement db 80 ;Number of Characters each line can contain db 8; NULUTERM.ASM 01/25/85 ; ; For NULU.COM Version 1.1 ; ; The NULU.DOC contains the information to patch NULU.COM ; using DDT and the save command. An easier way is to use ; this routine and MLOADxx.COM. Set the various items as ; desired and assemble with ASM or MAC to obtain a hex file. ; Then use MLOAD as follows: ; ; MLOAD NEWFILE.COM=OLDFILE.COM,NULUTERM ; ; NOTE: NULUTERM is the hex file NULUTERM.HEX. The file ; type extension is not necessary. ; ; Keith W. Antcliff ; P.O. Box 906 ;Background Mode OFF db 3,3,27,71,56,0,0 ;Underline ON db 4,3,27,71,48,0,0 ;Underline OFF db 6,1,26,0,0,0,0 ;Clear Screen org patch7 db 60 ;Number of lines/page for LST ; Number of Bytes,byte,byte,byte,byte,byte,byte ;6 bytes total ; org patch8 db 0,0,0,0,0,0 ;Initialize Printer ST ; Number of Bytes,byte,byte,byte,byte,byte,byte ;6 bytes total ; 8080 ASSEMBLER LANGUAGE NOT Z-80. ** ******************************************************* ALWAYS BE SURE TO CLOSE THE "OPEN" LBR FILE WITH THE -C COMMAND BEFORE EXITING - DO N O T EXIT WITH A CTRL-C NULU will write the directory when -C is used but will not write the directory if you bail out with CTRL-C If you have -Added or -Krunched the library, the new directory must be re-written to disk or the file will be T R A S H E D !!! If you have a highly modified system (not standar0 ;Number of Visible Characters/Line org patch2 db 04h+nl ;Number of Open Files Allowed dw 0ch+nl ;Number of Relocatable Tasks org patch3 db 16 ;Number of Contiguously numbered drives db 32 ;Number of Contiguous User Areas org patch4 db false ;NULU Read/Only db false ;Exit like LU on command tail db true ;BRIEF mode OFF db true ;Allow ESC,RET from PROMPT etc. db nl ;Nesting Level for NCF files ; ; The following 39 bytes can be used to store any ; valid NULU operator  C SUPERZAP 2 FOR OSBORNE 1 (C) W.M.DAVIDSON JULY 1981 DBGRCNFGT=SUPERZAP VERSION 2.2::*;U<2*;y,u":=???????????DSK:???????????:$:Ę:":̘&=? 4=2W:<2$:? 5&:":_2>W!%:7~&$:MAIN**0*""[!"222<2!> #͜ :ڤa9M:\(2=2!]~ !  ~?(#?(W!] :!   :_ ͉?!q BWTR*n| *h"n*n+"n͉?SPBL*r" !!"r:2[:2ZJu͎2!S [r "rd * "rX [r+SrD =[r*^R Ͱ* "r2[rKj [lKY+Sn"pͰ: ((R ͉?!OLSEL NXFS*#"\: >2 Ͱ*""}PRFS*| Ͱ+"\: >2s Ͱ*"FSCH:(Ͱ !:+ (|\>2PSCH !:+ (ʹ͉?SCCH! !, >2+ 22* 2222bJu ! (͉?222:!u͎2!(Ͱ:P  :7=<2;ā2;,!,-!,-*:|N,>, Enter Hex Track Enter Hex Sector 2Enter Hex Block N Next SectorC Change SectorP Previous SectorS Select SectorD Next TrackT Select TrackU Previous TrackX Exit from Superzap6F Exit to File List6K Select Block Current-Track Current-Sector 2Current-Block  # 7 NCPSDTUXFKA m F m  kM@ DPSI!*nx!*px!*rxUBLK\!"}""\: W\!U"Ͱ:WRBF*">22*">22[iJO:2͜J*~#"gͼ:<2 ͼ: >2*"ͭ:[=2[J>|͝*~#"S:<2:<2 >|͝:<2M #&),0369?@ABCDEFGHIJKLMN (2O:g:g:gi~!:O ~2Z:(ͭ͜:(:[<2[!:O ~2[ɷ!:O ~2[: 88Ͱ':&o[:wS͜J:gͼͭD:͎2XFDPENDR2FDMD\ !n"M!"""}\:( !U"Ms!\4]!222/2:( !?2!(!u͎2!(Ͱ:F À\ Select Function ===> $Enter Hex SectorN Next Sector(C Change SectorP Previous Sector(F Select New FileB First Sector of File(S Select SectorE Last Sector of File(X Exit from Superzap File-Name Access $Current-Sector 5File-Offset d:filename.typ R/s ) 7NCPFBESXͰ :(Ϳ:* ! ^H Cursor left(^L Cursor right^K Cursor up(^J Cursor down^I Change Side(CR New Line^Q Cancel changes(^Z Save Changes  .DlLEFT: :=2: :/2bJTOGL:/2>2bJDOWN:2bJUPWD:2bJRGHT: :/2: :<2bJNWLN>2:p2bJCHND>2* 2+ QUIT>2* SFSN*"!!""}!:2[:2ZJu͎!S *))))""}- !""} !g[nKY [p[lR0!"rKj+*^R8Sr!"rNXPS*p#"p[YR8 !"pF  ͉?PRPS*p| *Y+"p *p+"p͉?SPSN*p"@ !!"p:2[:2ZJu͎2!S *p))))"p? *@ "p3 !qg!pg" *p[YR8 Ͱ*@ "p2Ͱ: ((ê ͉?!;FRTR*n#"n[hR8!"n͉?SPTN*n" !t!"n:2[:2ZJu͎2!S *n))))"n? * "n3 !og!ng" *n[hR8 Ͱ* "n2Ͱ: ((!S(ͰEM:S:&o[F:(x yOxw2ͭJ:S͜JD0123456789ABCDEFDLST:@2!*"2:!(H~??_! F!:_n`:͝ͼ[!C*"!4(Drive d: Directory ListRDIR*""+"2K_*"*"K_*"L(*"*[Rz*# ͜[z!"RS*#RDM*"xʛ>2yʼG~2¼# á:_[*#!42! _F!:_n` |E<FMT! x I MTnkDRMD:2/2!]^6  :(!!h2*| !R((*Ͱ!":u͎!6(Ͱ@:D 0^H Cursor left^L Cursor right^K Cursor up^J Cursor downS Select FileX Exit from Superzap6C Change Drive6P Select physical sector  SXCP>Wqka** No records in file ** File not found PSMD:O'I*SY[YKf "l:\_SjK^ [YKY+Sh$!"n"p222!!!g*"} (Ͱ: *"\:(Ͱ*"""}!?!> 2!FRFS!"}""\?!LSFS\#*}+"\?!CHDR!(!>2u͎ NA!%(O'| Ͱ52<22 :_[:2\>2M:D(Enter Drive Name or press ESC ===>** No files on drive -:=?2; ::?2; ::?2; ::<2; ::STFL: Ͱ!n"Z:2\:&o))))[] 2h  N!w#>.w#2w#:>W(>O2FMTD! > w#w@w#>:w:Zg:[o>22*}"*"}\!2\"PSRDKn*Kp*n[fR8 [I<DM-3PSWRKn*Kp*n[fR8 [I<DM-6MTCHN# B+DOIT)LDHL~#foMULT>!j =&)DIVD>!))8#BA =H0SETD>D2SETF>F2SETP>P2SETX>X2CHRI(2FOLDa8{0_CHRO_ALRM>͝SPCO> ͝CLRS!CCLRL.g!CCURS!C| ͝} ͝ to a scratchpad buffer, or exchanged with the scratchpad. The directory list may be full (*.*) or selective, eg *.ASM and the selection may be changed at any time. A file TYPE facility gives a paged, formatted display of any file. Control characters are displayed as "." except for TAB and Carriage return/Line feed which are processed normally. COM files are not formatted. The SPZ command format may enter anor 8080 but extensive use is made of Z80 opcodes, and this would be a large exercise. Subroutines would be required to simulate LDIR, LDDR, and CPIR, to say nothing of varieties of shift, rotate and load instructions. CPM 2.x is required. One or more disks may be used - SPZ determines if a selected disk is defined in the BIOS before attempting to access it. The terminal used must support cursor addressing, clear aged forward and back. Other drives may be selected or the current disk changed - NOTE - if the disk in the current drive is changed, the "change disk" function should be used to select the same drive again. This provides a new directory list, and avoids CP/M making the disk Read Only. Track/Sector addressing is selected from the directory list display. The directory list selection may be changed - the defaDPNLF#DFLD~#ng##CCFLD~#ng##~(ͼ##STRO~(͝##ASCO0 0>.͝HEXO͇͇HEXW|g}gHEXCƐ'@'͝LD~#ng##CCFLD~#ng##~(ͼ##STRO~(͝##ASCO0 0>.͝HEXO͇͇HEXW|g}gy operational mode directly - SPZ enters SPZ with a *.* directory list. SPZ d: as above with d:*.* directory list. SPZ [d:]afn as above with d:afn directory list. SPZ [d:]ufn enters SPZ in file relative mode, using the specified file. SPZ [d:]DSK: enters SPZ in Track Sector addressing mode on  screen, and erase to end of line. At least an 80 by 24 display is required. FACILITIES. SPZ enables disk sector editing in HEX or ASCII, using File Relative or Track/Sector addressing. In File Relative mode a sorted directory listing is used to select the file. In both modes forward and backward browse is provided, in addition to random record selection. The displayed sector may be copiedult is *.* unless set by the SPZ command. FILE RELATIVE MODE. In this mode the selected file is displayed in HEX and ASCII format with record number and file offset displayed. For .COM files the address when loaded at 0100H is diplayed. The record displayed may be selected by browsing forward and back, locating the first or last record, or by setting a record number (in HEX). When setting a record number, Hex digit SPZ.COM SPZ is a full screen interactive disk update utility, providing many of the features found in DU.COM. The program is menu driven, and little additional documentation is required. The following notes consist of a functional overview, plus notes on features not documented in the menus. SYSTEM REQUIREMENTS. SPZ requires a Z80 - it may be possible to update the source fthe specified drive. DIRECTORY LIST MODE. In directory list mode the cursor is positioned on the first filename displayed. The cursor can be moved LEFT, RIGHT, UP or DOWN using Control keys. A file is selected by typing a command character against the required file name - "E" for file relative editting, or "T" for the TYPE function. Up to 32 file names are listed. If there are more files, the directory list may be p  s are entered in "calculator style" - new digits are entered on the right while the number moves left. Backspace deletes the last digit entered, and Escape restores the original number. These features are common to all number entries in SPZ. The selected record is read when RETURN is pressed. If it is not found, the previous record number will be restored. The displayed record may be changed by typing s between editing the NAME and TYPE. The ESCAPE key restores the original selection, RETURN produces a new directory list. NOTE - insert and delete affect only the field being editted, - characters do not wrap between name and type. TRACK/SECTOR ADDRESSING. This mode is entered by typing "S" in directory list mode. The facilities provided here are similar to File Relative mode, but sectors are selrminal control functions. Forward and backward paging operations are provided, including return to top of file. Following paging, the highest page displayed can be restored. DIRECTORY LIST SELECTION. The ambiguous file name used for the directory list may be edited by typing "M" in the directory list mode display. The existing file NAME and TYPE may be overwritten or edited using Iand other functions may be altered using DDT, or preferably a Z80 debugger. Three 4 byte strings are reserved at 180H, for VDU control strings, each of which MUST end in 00H. 180H - Clear Screen 184H - Erase to end of line 188H - Cursor position prefix The byte at 18CH is used as a "flag" character in the directory list - the cursor is positioned over it. The control keys used f "C". The cursor is positioned on the first hex digit, and is moved using the same control keys as are used in the directory list mode. Any valid hex digit may be typed to alter the record. The TAB key moves the cursor to it corrosponding location in the ASCII display, allowing character strings to be easily changed. Another TAB returns the cursor to the HEX display area. Two control codes are available to stop editing the reected by setting (or browsing back and forward) track and sector numbers. The allocation block number is also displayed and may be set. When a block number is set, the first sector of that block is displayed. The record diplayed may be altered in the same manner as File Relative mode. The scratchpad facility is also available in this mode. Note that sectors saved in one mode are available for exchange in the other mode. NSERT and DELETE control keys. Only those characters defined as legal in the CPM documentation are permitted. If "*" is typed at any point in the NAME or TYPE, the remainder of the field will be filled with "?". If a SPACE is typed the remainder of the field will be blanked out. Period also has this effect if used in the NAME field - an ambiguous file name may thus be entered in the normal fashion. The TAB key switcheor cursor movement are defined by equates in the assembler source and may be altered if desired. The menus will reflect any changes made to these equates. SPZ.MAC Several Macros are used in the SPZ assembly. These are provided inline. $RTN is used to head each subroutine. It generates a label (using DS 0 because Microsoft seem to think EQU statements do not need to be listed in tcord - one saves the changes and rewrites the record to disk, the other restores the record to its original contents. Return to directory list mode is made by typing "L". TYPE FILE Files are TYPEd with up to 72 characters per line, 18 lines per page. Except for .COM files, Carriage return/Line feed codes are honoured, and Tabs are expanded. All other control characters are displayed as "." to prevent unwanted te INSTALLATION SPZ uses the following terminal facilities - Cursor Addressing Clear Screen Erase to end of line. SPZ assumes that the cursor is positioned by a prefix string followed by ROW+020H, COLUMN+020H. If this is not the case for your terminal you must update routine CURS and reassemble and link SPZ. The cursor positioning prefix, !  he Macro expansion [ Ah well, it takes all kinds ...]). An entry statement is also generated so that the L80 /Y otption will provide symbols for ZSID. $PANEL Generates a call to the panel display subroutine, passing a panel name as a parammeter. $NPANEL Does the same, but first clears the screen. $FLD Generates a call to the field display subroutine. $IFLD Same as $FLD, but also input2>2(\s͡ VDO LN CL Insert FC Space V::>2>2H[*#&> 2H*&#&>B2He`i&>42H*k[iR#&22H>22H:\( @>:!]~ (#!e>.~# :> OOOO0O> N#F#>0 0<330 z0͵ (F(((w# 0 @>^>(+~!5 05H> > 55H6*i+6 *%6 +6 "m+"o!""BDM[[k*m"m  converts to upper case. $STRO Prints the specified string. Hͳ *k"*k"*|( *|(R8>27*kR8#[kR[m+**| >22 ͏  *[RB8>2*k[R8*k[R0F>2*[kR[m*[RDM* "* "[kSk2 ͏[*RDM[k#Sk2 ͏*kp :[R8 *RR? 2 ͏ *2 *"k͏͡ Erase all (Y/N)͵_Y*i+"k*o#"m2\ !]6 # ~#ͭ >2͘ 0 ( (>2M [g*k#R0l GO2)8~# :<2 :<8s a character and converts to upper case. $STRO Prints the specified string. $HEXW Prints a 4 byte HEX number. $MTCH Calls the string search function. $EXVA Calls the vectored call function. Control Code Equates. A set of EQU statements is provided to change the control codes used throughout SPZ. These EQUates are also used in the menus, hence changes to theSkP[m*k"kSm*oR[kR0 [mR[iR*iDM*k*o*mDM*kDM*m++H 0(D 0(D!"*i*i"g>2*oM*k> (##"g*g[iR|(DM*g> SH (H  !8ɷ  (H { 0 >2ͼ DH 0( :_y8H ( H ͭ8>2H 0 D*k> (##"g ͭ8(*gKiBDMx7*+"*g++> (*i"g##"g>2*ã2*ã͡1*"!"s*"_!4ѯ2!4H=: _: _22HERʸ͡ Tab stop (2,4,8,16): !r!~0 0 W{__#{((( (> 2=2q1&>2M_ɯ!hw#7\<(+\ & ( (#w+|(7 6 _!\l !l\7\<(*~ ~ > # \<> 2y2xP8 2HxMW>2M*k> #~# x82GH)8~#ͭ : /!52Hͭ2<2H͋2<2H*g ɯ2<2H͠2>2Hͼ ͳ *g)0*m~# > )0*m~# ͭ  ( 8   :q :<2:2H͠2>2Hͳ 22H > 2n H 2 :  0 H *k  (*k#"k:w>2M ( :Oͭ : /͏ > ͭ ͋ *#"*g~ # "g*m~# ͭ :(22M*k> se will correctly update displayed messages. Take care not to use 00H - CPM function 6 does not return the ^@ key! also codes realy must be control codes - 01H to 1FH otherwise the panels get funny, and results might not be what you expect when editting a sector. Thats it Folks - Willie Davidson. 8 Comely Bank Street Edinburgh Scotland.  Find: !r͡ Replace with: !2r͡ Ignore U/L case? ͵((>Y>Yͭ >2!~(?w#>Nͭ 2͡ Backwards? ͵( >Nͭ >2>Yͭ >2:(3:[m!>(#Sm[k!2~(#Sk>2:G:(*k++(+A8"͏*m#+(#0+͏>2>2O~?#++a{_͵M :2>,22H:(!!~# X*m~#"m  :O / :O { *m~#( ( ( (~#+"m:O /H 0 *k 0 "k͠2>2"   ##H *m[kRDM+|*m[oR[k~ #"mSk 7*i[k+R*m +w"mSk 7~# :̀ >2&O2<2H*g)0*m~#ͭ : O/ ( 8 > :q >^ @ G:Pxb:"͡ Abandon changes? (Y/N)͵_Y: 6Ͳ>2e8*kB >20>2*k"k#:] :*m+*iX8*m͓Y : *#P*#8͓>2Ͳ \!r r!\͡ Filename: !r!~(b > :: ~?@2non- document file full screen editor. It originally appeared in a BYTE article by Richard Fobes (BYTE 9/82 and 10/82), was subsequently modified by Spite Software, then Bill McTeer, then Don Krantz, then Mike Rejsa, then Don Krantz, then James H. Whorton. The present version (2.3) bears almost no resemblance to the original, except that both purport to do full screen editing. VDO is a memory based editor - that means that both the editor and the file being edited reside in memory. With a H   H  r r)r > {NH:(s͡ Error: :o&~_#~W͘ ͡ Press ESCAPE to continue2͵ BAKon off!2HVFile too bigInvalid keyInput/Output FailureString not foundDisk fullBlock not markedBlock staddles cursorBlock too bigIllegal tab stopput/Output Fa In the first version, where no filename is specified, VDO will create a new file when you exit, asking for the filename at that time. If the second version is used, VDO will attempt to open the specified file. If no file of the specified name exists, VDO will display an error message. You may continue from that point, and the name specified will be used to save the new file. If the file specified can be located, VDO will load the file and place the cursor at the start of the file. In any##2~?.( (# (+#~(.# ~(?#!\ >2͡ Printer Setup codes: !r!~((#X*mm > (:q ( > ( x F#^#V## ^#V## s͡ ^O Commands S Save/continue X save/eXit Q abandon Z Zap file B mark Block start K mark block end C Copy block V moVe block Y delete block W Write block R Read file P Print file ͬ͵͕ͮ bO  p  ?   Y s͡ ^Q Commands R top of file C botto 59K CP/M system, that gives you a maximum file size of about 48K. Since you will probably use this for program source files, that ought to be plenty. If not, there's always WordStar. VDO uses a small subset of standard WordStar keystroke commands. Where possible the keystrokes to activate a VDO operation are exactly the same as for WordStar. Advantages to VDO VDO's major advantage over WordStar and other screen editors is its small size - only 5K of disk s.fo VDO Version 2.3 02/20/85 Page # Documentation for VDO Version 2.3 Contents The following appears in this document: Overview of VDO Advantages of VDO Disadvantages of VDO Operation Cursor Control Single Keystroke Commands Quick Commands Block Commands Error Handling Customizing Notes Overview VDO (Video Display Oriented editor) is a small (5K)  of the the three situations, you will be ready to start editing the file. VDO has only a few commands, broken into three major groups: Cursor Control, Quick Commands, and Block Commands. Several minor commands are also implemented. Anything not a control character which can't be interpreted as a command will be entered into the file as text. Cursor Control The standard WordStar cursor controls ^A, ^S, ^D, ^F, ^E, ^X, ^R, ^C are all implemeted, and all wm of file F find a string A find-and-replace B find block start K find block end T change tab stop ͬ͵͕ͮT Y  0 >^ͭ @ͭ ͡ ͡ While editing, these Control codes may be used: ^A word right ^F Word left ^G delete char ^Y delete line ^T delete word DEL destruct/BS ^C page down ^R page up ^V toggle insert ^U repeat find ^P enter printer code ^N insert C/R ^O block cmd menu ^Q Quick cmd menu Selection: &:] (6Zr v͵pace is needed, as opposed to 60+ for WordStar. A minor advantage is VDO's speed - with no overlay files to swap in and out, VDO seems very fast. VDO normally uses a memory mapped display interface, which speeds it up even more. Disadvantages to VDO VDO lacks many features found in WordStar. However, most of the important features are implemented. .cp 5 Operation of VDO VDO is started by typing either: VDO -or- VDO d:filename #  ork pretty much as you'd expect. Definitions are: ^S move cursor a character to the left ^D move cursor a character to the right ^A move cursor a word to the left ^F move cursor a word to the right ^E move cursor up a line ^X move cursor down a line ^R move a page (usually about 18 lines) up ^C move cursor a page down Notes: The Osborne 1 version ALWAYS patches the arrow keys to "WordStar" mode when entering VDO, and ALWAYS patcat the start of the text. ^QC places the cursor at the bottom of the text. ^QB places the cursor at the marker for the beginning of the block, if this marker is set (see ^K B). ^QK places the cursor at the marker for the end of the block, if the marker is set (see ^K K). ^QF allows you to specify a string to search for in the text. This string may not include carriage returns. After selecting 'F', VDO will ask for the string to look for (the "target" string). Type cters (doesn't include control characters displayed). Next, delete following white space (blanks and control characters) except for tabs or end-of-lines. ^Y delete entire line cursor is on ^G delete character right of (under) cursor DEL delete character left of cursor When moving the cursor, the display will adjust to the cursor position. You can't move the cursor off the screen accidentally. If a line is too wide to fit on the screen, it will scroll left automatically whe is substituted for the target string. Note: Strings containing Carriage Returns may not be serached for, but any other control character may be included in the target string. (both ^QA and ^QF) ^QT Set tab stops. VDO allows tabs to be set to 8, 2, 4, or 16, with the default at 8. This is a dynamic process, and is used mainly for C, Ada, and Pascal programmers for variable indentations. Block Commands The block commands are ahes the arrow keys to CP/M on exit. The Osborne 1 uses ^- in place of DEL. The Kaypro version allows the use of the arrow keys, as well as the above WS cursor controls. (JHW) All versions may patch the source code to modify how many lines the ^R and ^C commands move. Single Keystroke Commands These commands are all activated by single keystrokes. RETURN and TAB are both accepted at any time, and entered into the file as text. ^L repeats last ^Q F in the string, then press RETURN. VDO will next ask if you wish to ignore upper and lower case differences. If you do not press "Y", VDO will look for a string capitalized exactly as you capitalized the target string. Pressing a "Y", "y", or "^Y" will cause VDO to treat upper and lower case letters as exactly identical. (The default answer for this question may be configured in the source code) Next, VDO will ask if you wish to look backwardsn the cursor travels off the left end of the screen. The column count on the status line will reflect the correct logical column at all times. Control characters do not count as occupying a logical column. Quick Commands The Quick Commands are all accessed by typing a Control-Q. A menu will display showing Quick options. The Quick commands, with one exception, all involve moving the cursor to a different position in the text quickly. ^QR places the cursor ll accessed by typing a Control-K. A menu will appear with second-keystroke options. Not all Control-K commands necessarily relate to marked blocks. Block commands mainly operate on large portions of the text. A "Block" is a section of the text file begining with the Block Start marker, and ending with the Block End marker, which you may set at any point in the text. Attempting an operation which requires the blocks to be marked will generate an error if the blocks aren't marked properor ^Q A (see Quick commands), using same options. (Note: ^U for Kaypro version. JHW) ^P Enter a printer code - The next character typed will be entered into the text as-is, even if it normally has other significance (e.g. ^P^L will enter a ^L into the text file rather than doing a "repeat find" operation). ^V toggle Insert mode on or off ^T delete one word to the right - the scheme is: first, delete character under cursor. Next delete following displayable chara from the cursor position. If you do not answer "Y", "y", or "^Y", VDO will look forward from the cursor postion. When VDO finds the target string in the text, it will move the cursor to that position and display the surrounding text. If the string is not found, an error message will display and the cursor will be returned to the starting position. ^QA Find-and-replace. Works just like ^QA, except when the string is found, a string of your choice$  ly - i.e. the beginning or end not marked, or the block end marker prior to the block start marker. [NOTE!: The following commands are accessed with ^O in the Kaypro version. (JHW)] ^KB Set block start marker. ^KK Set block end marker. ^KC Copy marked block to the cursor position. Block remains marked at its original position, a copy of the block appears at the cursor, the cursor is positioned at the start of the copy. ^KV Move marked block to the cursor position. The ma start the editing session or using ^KR. In the case of ^KR, none of the file is retained: the text remains as it was before you attempted ^KR. This message may also occur when attempting to insert text after the memory size of your system is exceeded. INVALID KEY - occurs when an entry contains an unexpected key. Can happen during text entry when an undefined control character is typed (e.g. ^O), or when entering filenames if bogus characters are entered as part of the filename (e.g. "space" disk versions of the file), and erases the filename. ^KX End of Edit. Saves the file under the current name and creates a backup file if a version is on disk already. If VDO was invoked without a filename, or if you ZAPped the file, VDO will ask for a new filename. ^KQ Abandon file - any changes to the file (unless you did a ^KS are abandoned. Any disk versions of the current file are not affected. ^KS Save and continue. Saves the file as it appears in memory, ce code for VDO, M80 and L80 from MicroSoft, and experience with assembly language. VDO is configured for the Osborne 1, the Zorba, the Fergusen BigBoard, DEC VT52 terminal under CP/M and the Kaypro. Which version is generated depends on four equates near the start of the source code. Several other equates allow setting a custom scroll point for the horizontal scroll, default insert mode, default answer to the Ignore U/L Case question for ^QA and ^QF, the DELETE key to be usrked block is removed from its position and appears at the cursor. The markers disappear and the cursor is placed at the start of the moved material. A block can't be moved "into itself". ^KY Delete marked block. The marked block is removed from the file and the cursor remains where it is. ^KW Writes the marked block into a file of its own. You specify the new filename. ^KR Reads a disk file into the current file at the cursor position. You specify the filename.) or if the filename can't be properly formed. INPUT/OUTPUT FAILURE - occurs when a requested file can't be found during initial load or ^KR, or when any system failure occurs (e.g. DIRECTORY FULL, BAD SECTOR, R/O). STRING NOT FOUND - occurs during find or find-and-replace operations if the target string can't be located. DISK FULL - self explanatory. You may insert another disk and try again. BLOCK NOT MARKED - occurs when attempting a block operation which require the block to be marked ifand continues the editing session. Used in case of failure. -- VDO resets the disk system before writing files, so the disk may changed between reading a file in and saving a file, or in case of system failure (e.g. DISK FULL, BAD SECTOR). Error Handling VDO has 9 editing errors which may occur, which clear the screen, display a message, and wait for you to press the ESACPE key to clear the error display. The messages are: FILE TOO BIG - occurs when loading a file toed, and the number of lines to scroll for ^R and ^C. Custom terminals may be installed by either memory mapping or terminal mapping. Terminal mapping should follow the VT52 map, which actually is found as "not memmap" in most of the display interface. Memory mapping is easier, except for the cursor. You'll have to modify "CH.IN" to display some sort of cursor  i ^KP Print the file. You will be asked for printer setup codes, which are entered as you wish them sent. Example: You wish to send ESCAPE B to the printer prior to printing. Press the ESCAPE key, then the B key, then RETURN. Problems: You will not be able to send any codes for which keystroke equivalents don't exist, and you will not be able to send the RETURN code (ASCII CR, hex 0DH, decimal 13). ^KZ Zaps (erases) current file from memory (does not affect any  both the block start and block end markers aren't marked or if the end is prior to the start of the block. BLOCK STRADDLES CURSOR - occurs when trying to move a block into itself. The cursor can't be inside the block when copying or moving a block. ILLEGAL TAB STOP - occurs when setting dynamic tab stops, if you do not enter an valid tab stop number (2, 4, 8, 16 are the valid numbers) Customizing VDO VDO may be customized if you have the following: The sour%  ining in k. You will then get a display of the first entry in the directory. NSWP will also give you a listing of the user area that the file(s) are on, if you logged in all user areas. Typing 'space' or 'return' or 'F' moves you forward in the directory, typing B (or b) moves you backward. The directory is circular, so typing space at the end of the directory moves you to the beginning. (A line is skipped.) When you first invoke NSWP, you can specify an alternate drive to startant it erased. If the file is read-only (R/O), then a bdos error will occur, and the program will warm boot. :P - Print a file P -- The current file is sent to the LST: device (your printer). If the file is squeezed, it will be unsqueezed as it is listed. A control-C interrupts the function. :R - REName file(s) R -- The current file is renamed to the name and user area you specify. For example: A15:FOO .COM? A0:FOO.COM will rename the file from A15 to A0. Lower ead-only (R/O), then the copy is simply not made. You will be told. You may use the delete function to delete the file, and then retry the copy. As an option, NSWP will perform a CRC verification of the copy. When you are prompted for the drive and user, add a 'v' or 'V' to request verification. Thus specifying 'b3: v' will copy the file to drive b:, user area 3, with verification. A description of the verification method is included with this documentation. BUG: CP/M does not a single-density disk with a 1k block size. U -- Undo the effect of T (and take away the '*' or '#'). * -- Indicates a currently "tagged" file # -- Indicates a previously "tagged" file, may be re-tagged with the "A" option :M - Mass transfers M -- Mass transfer of all tagged files to a selected drive and user area. This is the main reason for the program. If the target drive fills, the operation is aborted, with the untransferred files remaining tagged. This function inv on. A>NSWP B: will begin with drive B: logged in. Selecting user area * will cause all user areas to be "swept" at once. At any time, you can view the menu of functions by typing a question mark (?). Simply typing 'x' exits the program. Note that all characters can be entered in upper or lower case. :C - Copy file function C -- This allows you to copy the file to the drive and user area of your choice. You will be prompted for the drive and user area. J case will be converted to upper case, but other 'illegal' characters are not trapped. It is quite possible to give names to files that CP/M won't recognize. (You can also change them back again later, however, so no harm is done.) Responding with "*" to the prompt will put you in the batch wildcard renaming mode.If the file is read-only, a bdos error will occur and the program will warm boot. :V - View an ASCII file V -- The current file is displayed at the terminal, witllow two files of the same name to be open on the same drive, even in different user areas. Thus, when transferring between user areas on the same drive, the target file is first named with the $ convention and then renamed. This can result in an extra file being erased. If there is too little room on the target drive, the transfer is aborted and the directory entry is erased. :D - Delete (ERAse) file(s) D -- The current file is deleted. You will be asked if you really wokes the copy function used by C, so everything said above applies here. To abort the transfering process, you must enter a CTRL-C. After transferring a tagged file, the tag is changed to '#' so you can tell what has been sent. This is for display only, the file is otherwise considered untagged, but see the A command. The '#' can be removed with the U command, if desired. If no user area is specified, or if "*" is specified, the current user area of the file is used. You may ust enter 'b3:', say, to transfer the file to drive B: user area 3. If you omit the user area, the current user area of the file is used. Any file of the same name in the target area is first erased, an exception being when you are transferring to the current drive and user area. In the latter case, the transferred file is copied with its named changed by putting a $ in the last letter of the file type. If an existing file in the target area that must be erased is marked rh automatic pagination. The return key will continue the process until a control x is typed to cancel the display to the screen. Single line spacing is possible by typing the space bar when the screen display has stopped. :T - Tag file(s) T -- Tag a file for later transfer. (See below.) After being tagged, the file will be marked with an asterisk,'*'. The total of all tagged files is displayed both in units they occupy on the current disk and in units they would occupy on a&   request verification on mass transfers just as in the single file copy. Just follow the drive and user specification with a space and a 'v' or 'V'. :Q - SQ/USQ Tagged files Q -- Mass transfer of all tagged files to a selected drive and user area, unsqueezing those which have been previously squeezed, or squeezing those which are tagged. OPTIONS: S - SQ tagged files during transfer U - USQ tagged files during transfer R - Reverse status to specified du: tory listing will appear as normal. If any of the 1-4, R/O, SYS, or ARC bits are set, they will appear with a reverse video block in the directory listing. NSWP2 may be also set to clear your local CRT when it signs on. To use these special features, see the next section dealing with DDT customization of memory byte locations. :DDT Customization The byte at location 103h sets the number of lines displayed per screen by the "V"iew command The reverse (or inverse) ON video bytes are from 1f the user area is ommitted, the current user area is used. You can NOT specify a starting place in the directory. Selecting "*" for user area, logs in all user areas at once. When logging into a new drive/user area be sure to follow the user number with a colon. i.e. B2: logs ALL files on B2 B*: logs ALL user areas of drive B B2:*.OBJ logs ONLY the .OBJ files of B2 :B, S, W, X, and ? commands B -- Moves you backward thed by available memory, though, as certain information must be kept on each entry. You should be able to use well over 1500 entries in a 64k system. Figure 20 bytes per entry starting at 26k and running up to within 1k, or so,of the BDOS. File transfers make use of as much memory as possible to buffer data. It is required to include the colon when specifying a drive and user area. Thus responding "B3:" is not equivalent to just "B3". Copy verification is done by computing a  If SQueezed, then USQ, etc. NOTE: The "Q" option will NOT work on untagged files :A - Tag again A -- Retags all the files currently marked with '#'. This allows you to repeat the transfers on another disk. Useful when the same batch of files must be sent to several disks. :R - REName file(s) R -- Batch rename. You will be prompted for an "Old name:" and a "New name:". In each case you may give any "ambiguous file name" in response. The logged-in directory is searched for matches04h to 10Ah, the first byte indicates the length of the sequence. The reverse OFF video bytes are from 10Bh to 111h, again the first byte indicates the length of the sequence. Bytes 1D13h thru 1D17h or for your clear screen code sequence. These memory locations can be set with DDT in the "S" mode, or even easier by using the EDFILE utility program. Be sure to SAVE 43 after using DDT.COM :Remarks Whenever a drive is asked for (and on start-up), the disk system is reset. This is to preru directory listing S -- Calculates space remaining on a drive. Simply enter drive letter to be examined W -- Wildcard tag of files. Allows you to select a large group of files for tagging. *.* *.ASM *.OBJ etc... X -- Exit to CP/M. ? -- Redisplay menu of commands. :Special features If your terminal supports reverse (or inverse) video modes, then NSWP2 can show you the attributes set for each file. If none of the attribute flags are set then the direcCRC checksum while writing the file. NSWP then reads the copied file back computing it's checksum. The two checksums are compared and you are told if they don't match. The CRC verification takes approximately 2.5 times as long as the straight copy. This documentation last updated 28 Mar 84 by Steve Sanders. It reflects the latest version available at that time. NSWP202  with "Old name", and the files are renamed, if possible, by the formula specified in "New name". A '?' in "New name" means keep that character of the current file name, an * is equivalent to filling out the remainder of the field (filename or filetype) with "?"'s. Any other character replaces the corresponding character in the current file name. When the substitutions are done, embedded spaces are removed. :L - Log new du: L -- Login new drive and user area. Ivent a disk from being 'read only' under CP/M, and to allow you to repeat operations on fresh disks (e.g., finish a mass transfer after a disk fills by inserting a second disk). It also means that you should be free to switch density and/or number of sides of a disk in a particular drive. This, however, depends on how well your BIOS is written. There is no logical upper limit to directory size, nor to the size of a file that may be transferred. The directory size is limit'   NSWP - A disk maintenance utility. Dave Rand 10232 - 160 Street Edmonton, Alberta Canada T5P 3E9 .pa .he NSWP 2 - A disk maintenance utility .fo - # - I N D E X Page Introduction ...o on o th followin RCP/Ms: Edmonton RCP/M - (403) 454-6093 (300 or 1200 baud) Stadium RCP/M - (403) 479-3450 (300 baud only) or voice at: (403) 484-4114 Disclaimer and warning Whil thi progra ha bee teste o man systems ɠ wil hav n liabilit o responsibilt t th use o an othe perso o entit wit respec t an liability los o damag caused o alledge t b cause directl o indirectl b thi program including..... 16 Contributions ....................... 16 .pa Introduction NSWР i ne dis utilit tha ca replac man o th mor commo utilitie tha ar used suc a STAT PIP USQ SQ TYPE PRINT SWEEP DISK7 PROT an others I onl 12 o dis space i replace ove 100 o utilities! NSW i writte entirel i assembl language an wil ru o an CP/ 2.x 3. o MP/ base syste wit n changes Sinc i i code i 808 assembler an 8080 808 o  NSWP Overview NSW i director an fil manipulatio program Wit it yo ca copy delete rename unsqueez an squeez files Th documentatio followin i spli int tw majo sections tutoria fo th inexperienced an referenc section Th referenc normall wil b use i conjunctio wit th progra t answe specifi question regardin NSWP Th tutoria i broa coverag o al o th functions an shoul b rea throug ..................... 3 Overview of NSWP ............... 4 Invoking NSWP .................. 5 Single file commands ................ 6 Help ........................... 7 Forward and Backward ........... 7 Exiting ........................ 8 Finding a file ................. 8 Viewing and Printing ........... 8 Deleting a file ................ 8 Copying ........................ 9 Renaming ....................... 9 The Space command . bu no limite to an interruptio o service los o business anticipator profit o consequentia damage resultin fro th us o thi program. Furthermore althoug thi progra ha bee place int th publi domain retai al copyright t thi program bot i th U.S. an i Canada an pursuan t this thi progra MA NOԠ BŠ SOL B AN PARTY unles specificall authorize b th author Dav Rand i writing previou t th firs cop bein soldZ8 compatibl processo wil serve Not tha thi progra WIL NOT ru o CP/ 1.4. Whe NSWР wa conceived th dominan fil utilit wa SWEEP an thu NSW i synta compatibl wit SWEEP bu wit man extensions Thi allow yo t directl renam NSWР t SWEEP i yo s desire wit n retrainin period. ɠ hop tha yo enjo thi program an us i well An problems o suggestion ma b directe t mysel a th addres o th firs page o a leas once. Th mos importan thin t remembe whe usin NSW i tha i provide lis o you file i ALPHABETICA̠ order Movin aroun i thi lis i quit easy an wil soo becom secon nature. I thi documentation al use inpu i underlined A well whe th堠 "current fil i reference䠠 i thi documentation i mean th fil jus t th lef o you input Thi "current fil i ofte referre t a th fil yo ar "on".............. 11 The Log command ................ 11 Introduction to Multifile Commands .. 12 The Tag command ................ 12 Wildcard tagging ............... 13 The Untag command .............. 13 The Mass copy command .......... 13 After the mass (Again) ......... 14 Erasing files .................. 14 Squeezing and Unsqueezing files. 14 Setting file status ............ 15 Epilogue ............................ 16 Credits ........................ A well thi progra MA NO B INCLUDE IΠ AN٠ OTHE PACKAG FO SALE eve i thi progra i indicate a bein 'i th publi domain' Al o th abov applie t bot th origina a wel a derived o modifie copie o th original An modifie copie o thi progra MUS NOԠ hav th copyrigh notic violated change o altered. Pleas repor an copyrigh violation t th author a on of the above telephone numbers. Thank you. .pa