cERROR13 DIFvERROR23 DIF 9DU3 DIF-ERROR13 COM1 8ERROR23 COM>DU3 COMQZqREAD ME ̅0a 0 ; 01/17/85 Revised by Jay Sage to turn off ZEX interception ; so that user can decide on way to handle the ; error. The messages are altered to inform the ; user that the error was encountered during ZEX ; processing. Also modified to simply flush command ; line when the bad command is the only one on the ; line and was not invoked by ZEX. ; Modified code is indicated by markers. . 15c 21190 version equ 13 . 19a 16327 ; . 40c 3703 z3env SET 0fa00h ;address of ZCPR3 environment . 53c 33688 ext getzrun,stopzex ;ZEX control . 169,176c 45846 ; new block added by Jay Sage call crlf call getzrun ;see if called within ZEX jc prompt1 ;can't tell -- no message buffer jnz prompt0 ;ZEX running ;if ZEX not running and only one command on the line, ;then simply report the error lhld restcmd mov a,m ;get first char of rest of command line ora a jnz prompt1 ;if other commands, go to prompt call print ;else just report error db 'Bad Command: ',0 . 184,187c 50314 call crlf ret prompt0: call stopzex ;allow user input to error handler call print db 'ZEX ',0 ;add word ZEX to message prompt1: ; end of added block call print db 'Line with Error is:',cr,lf,' ',0 ; minor change call erradr ;get address of error line . 197a 594 db cr,lf,cr,lf,'Options are: ' db cr,lf,' 1. Replace Command in Error with a New Command' db cr,lf,' Replace ',0 lhld badcmd call pstr call print db cr,lf,' 2. Advance to Next Command and Resume Processing' db cr,lf,' Advance to ',0 lhld restcmd call pstr call print . 331c 61309 db 'ERROR1 ',0 ;name of error handler . $a 60489 . can't tell -- no message buffer jnz prompt0 ;ZEX running ;if0a 0 ; 01/17/85 Revised by Jay Sage to turn off ZEX interception ; so that user can decide on way to handle the ; error. The messages are altered to inform the ; user that the error was encountered during ZEX ; processing. Also modified to simply flush command ; line when the bad command is the only one on the ; line and was not invoked by ZEX. ; Modified code is indicated by markers. ; . 16c 21192 version equ 13 . 43c 48458 z3env SET 0fa00h ;address of ZCPR3 environment . 56a 37011 ext getzrun,stopzex ;ZEX control . 183a 8462 ; Check for Single Error Command (block added by ) ; call getzrun ;see if called within ZEX jc prompt ;can't tell -- no message buffer jnz prompt ;ZEX running lhld restcmd mov a,m ;get first char of rest of command line ora a jnz prompt ;if other commands, go to prompt ;if ZEX not running and only one command on the line, ;then simply report the error call print ;else just report error db 'Bad Command: ',0 lhld badcmd call stndout ;reverse video call pstr call stndend ;normal video call crlf ret ;end of block added by ; . 214a 4720 ; new block added by Jay Sage call getzrun ;see if called within ZEX jc prompt1 ;can't tell -- no message buffer jz prompt1 ;ZEX not running call stopzex ;allow user input to error handler call gxymsg db 6,5 db 'ZEX>',0 ;indicate ZEX error line prompt1: ;enter here if not called from ZEX ; end of added block . $a 61156 .  getzrun,stopzex ;ZEX control . 183a 8462 ; Check for Single Error Command (block added by ) ; 0a 0 ; 01/18/85 Modified by Jay Sage to incorporate a set of permanent ; macros. These macros can be invoked by the command tail ; when DU is invoked. They are copied from a space of 128 ; bytes near the beginning of the code. The area is ; identified by a string of text to facilitate patching. ; The macros are listed one after another, separated by ; carriage return characters. Macros that are not to be ; defined must be present as carriage returns alone or the ; program will fail. . 21,22c 19040 VERS EQU 12 Z3ENV EQU 0FA00H . 155,169d 56547 156a 56685 ; Space Added for Initial Macro Definitions -- block added by ; ;label to help locate when patching db 'INITIAL MACROS:' imac0: db 'G0,D',cr ;macro 0 db '-D',cr ;macro 1 db '+D',cr ;macro 2 db '-8D',cr ;macro 3 db '+8D',cr ;macro 4 db cr ;macro 5 db cr ;macro 6 db cr ;macro 7 db cr ;macro 8 db cr ;macro 9 ;fill rest of 128 bytes with carriage returns if imac0 + 128 - $ gt 0 rept imac0 + 128 - $ db cr endm endif ; End of Block Added by start: lhld z3eadr ;pt to ZCPR3 environment ; else ; ; Internal ZCPR3 Environment Descriptor ; MACLIB Z3BASE.LIB MACLIB SYSENV.LIB z3eadr: jmp start SYSENV start: lxi h,z3eadr ;pt to ZCPR3 environment endif ; . 301a 47629 ora a ;check for no tail jnz ctail ;if not, no need to increment inr a ;allow for blank otherwise present ctail: ; . 315c 21961 LXI H,TBUFF+2 ;PT TO INPUT LINE (1 changed to 2 ) . 340c 7592 ; line replaced ; JMP PRMPTI ;PROCESS AS THOUGH COMMAND LINE WAS TYPED jmp prmpts ;allow processing of macros in command line . 354a 868 PRMPTS: ;Entry when Command Line has Input . 1558a 51151 ; Initialize Default Macros -- new block by . 1564,1568c 50887 lxi d,imac0 ;point to beginning of default macro table initp1: push h ;save pointer to start of each macro initp2: ldax d ;get next initial macro character mov m,a ;store it in macro table inx d inx h cpi cr ;end of macro? jnz initp2 pop h ;retrieve pointer to start of this macro dcr b ;see if we've done all macros rz ;if so, return inr h ;point to next macro jmp initp1 ;INITP1: ; MVI M,CR ;STORE ; INR H ;PT TO NEXT PAGE ; DJNZ INITP1 ; RET ; End of Block Changed by . $a 25724 . d Z3ENV* $ERROR1, Version 1.3 Dg?#!s>;$ Error Handler Installed͜K"wʁ;ʁ#q6#;Š" w#""͂ͬ* ~$Bad Command: **͂U$ZEX $Line with Error is: ͜*$ Options are: 1. Replace Command in Error with a New Command Replace **$ 2. Advance to Next Command and Resume Processing Advance to * *$ 3. Replace Entire Line with a New Line Replace ͜*$ 4. Throw Away Entire Line and Continue Throw Away ͜*$ Select Option - ͼ͂1x2ʣ3ʰ4$ Invalid Option - Retry Ø$Replacement Command? * >Ø* !Ø$New Command? >Ø*" 6;# 6xs#r*" ww# ERROR1 .7~#.$w###~#~#fo>ddw ~ʇ#xw#=~#fo|"^#V|~7*^#V*$~#fo|**"~#fo*(~":@<2[?2[?!_//ʹ//̓ͩ*>|,/F/ͩ+:@C/>vLKLNo Fatal error(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACROUnterminated /!//)> Z 2 !~#o|g6:! ~@w#! :*~#~ h ͏ U ZZ^// /y/ /yG>GO> t/> >    >^@@*. O*. H  H |-}-~# x ~+ x3(a{_*Y}W$.[O*. H  Z3ENV* d ͿERROR2, Version 1.3 ʐ͏~!YͿ No Z3TCAP - Abortingh#͟!>Ϳ Error Handler Installed7"wʪ;ʪ#Ú6#;³"w#¶"G*~ͿBad Command: *\͇8>>>> VIDEO ERROR HANDLER <<<<-- Error Line --GHHZEX> \7͇& ."-- Options --1. Replace Command in Error with a New Command Replace *2. Advance to Next Command and Resume Processing Advance to *3. Replace Entire Line with a New Line Replace 74. Throw Away Entire Line and Continue Throw Away 7͇Select Option - W1 283E4jͿ Invalid Option - Retryò*͵$"Ϳ Replacement Command? *>Ͷk*!kͿ New Command? >Ͷk*ģʅ6;#ͣ6lxs#r*ͣww#ãERROR2 ;Z:3=͢~#ÿ͓w͓###~#~#fo>͓w ~"#͓w#*=͓~#fo͏|i"^#V|i~7*^#V*$~#fo|**"~#fo*(~"/RÅRP/IRPC/MACROUnterminated /!//)> Z> Z:@<> J> J!/:@0"?%O;.0~<=r2 !~#o|g6:ʶ!~ʶw#é!:~#  *   y yG>GO> t> t> t tttt t t>^t@t]tc*. pO*. ͟H ͨ Hͨ|¹}~# x¹ ~+ xa{_*}$.w V#^#͵V#^#͵~#5)/t\͇*u ~!XV###~X =*u ~!ڃW W W ~ʃ =*u ~!ڱW W W W ~ʱ =*u ~!~2 ##W ~: =%-2 2 % \ ttdʟ 2ʙ 3ʀ .w +b >O rG i? t>2 >2 Ͱ O^  GͰ t: 2 Ͱ tl Ͱ d   0tl Ͱ Ê Ͱ d  Î :  : : ʼ O:  ia 0  z0 y zt3~ #\ ~#t z OA *+~7 >GF 8 N F  P ~#\W #W ""u "u > y zÚZ3ENVINITIAL MACROS:G0,D -D +D * Ͱ-ͤ+!9"{*-"*6~##"*"*"*"*"* "*"***+2u**#~2v**2x**2w**""""""""U""""EͩRDU3 - Disk Utility III, Version 1.2 Type ? for Help 2!~‚<#o|g6 **!**~ ʷ#~/$2*2*:@4>2*2*"y****y*2*>2*!"}*;ʷ:*~# ʷ,͊2**G~1(####^#Vxx****~0V:V#0G** y~#͆ j,V;******~#͆ y**|ʓ Error -- Macro Expanded Command Line too Long÷****~# Invalid Command at or after xͦ÷+++ Out of memory +++ ÷>2*+ ~#6'++ DU3 Block Editor&., -- Movement -- -------------- Operation --------------- ^E Enter: A ASCII Chars + Next Sector ^  H Hex Numbers - Last Sector ^S <-+-> ^D ^C Exit DU3  v C DU3 Command Line  ^R Rescreen  ^X X Exit Editor to DU3 ^W Write Block+APosition:22+̀T+ Edit Command? ͊͜G >2+Invalid Command:ȯ2+ &.,!~z# $,&.6,!~ >.ͦ# ·$,² G@M`ku +-7AACHX=M`kuT+Block Written>2T+#Enter Text ( for Hex) --> :_zW~ ʐU#̀T+#Enter Hex Numbers (#nn for Dec) --> :_zW~ ʐ #U{Ð+#( +O T̀͜****͎ͣr2T÷TÖ)Ͱ:2Ͱ:UͰ:Ͳ+K:!o|g~z~ʫ Ҧ>.æ G=o,yæ:Ggx~   Warning: Remainder of Command Line after "@" Deleted Command -- ****~# ͦ0 > ͦ**~͊PC #~͊@ʍ '+̀Macro Definitions --A  # #Previous Command Line Definition -- @: ** # z  z0ͦ: **~# ͦ > ͦ0  W Invalid Macro Number Specified in Command÷ #**÷,'+̀ -- Queue Information --    -- Disk Information -- Disk Drive: :*Aͦ Tracks: **#͑ Sectors/Track: **͑ Group Size: :*2*BKn>-ͦ> 2***#}*|V;dzC{ nl:*`  nl,̀**|ʶ~> ~>(ͦ~z#>.ͦ:*ͦ~z~> °>)ͦ ++ Free ++ :*2*>:ͦ~# ~^ͦ**#"*!"***~O~_#~O:*/W#͡)K**|G>*2*"*0 **+"*|**:*~͊BʑGb**!>2*#****|¨}**!"***#"*Block Queue is Full -- Block Not Saved **÷͑ Blocks in Queue *| **#~**͊,N NU**)Y"*"*2*<)Reading from Group **DMn **"*>2***:*2*×++ No "<" Save Command Issued ++ ÷~#ɯ2*;**6 ÝjG~,= at :}*z̀Ý~<#~{:*}*}*}͜2*****͎ͣ!~#"}*:*'͙{°!;~~    ~^ͦ,³͜****͎ð  ++ EOF ++ ̀Ý:*‡++ Can't dump, no sector read ++ Use G command following F, or R or S following T ÷~,ʒ ›îBK ʮ,ʮ#`i͸K+}zv+:*A~z}}{#};ʷ:*H7~ >.ͦ{##}̀;ʷ{¸̀{¸~,M QTdSʀG ͙**)Y>2*Ý͙z**)͎2*ͣ****)**)**+:*G}2*:*G͵)"***2*:*2*-o&"*<͎2*UY**)"*2*<͎2*bk:*)=A:*o**ͭ)V **** #>2*\>?>D2*\<¸2*++ File Not Found ++ =2*o&))))) ͸\<¸~.  , ͊#~ ,#.#>  ~ .,.͙z.͜z.****͎Ý~ f,f͙zfrzf7**+|—**|**"***×+"***"***#**)**#**)Ҿ"*!"*****)Group = **DMn>:ͦ:*z>,ͦ Track = **͑, Sector = **͑, Physical Sector = **͑̀~͊#U#-yU#BK~ HʻA~ ,"*U#yʨ**‰~ ,#~ , ʺ"*U{y**»~ ,:*͎++ Can't read - not positioned ++ Position by: Track then Sector, or Group ><ͦz>>ͦ:*yxzy̓ ڌ0æ2'; ; d;  ; }0ͦ}o|g:2z0æ:> æK+>|ͦv+;ʷ~ ͦ K+ v+#~#͙z*{*ƀ_++ Bad Displacement (Not 0-7FH) ++ ÷~#ʘ~͊ , ->#0:ڋAG0))))o^#~#¦#^~͊0:0#bk)))o|gæ DU3 :*Aͦ:*o&͑? **++ Go|g> wͦ> ͦ**:v*2*:*,=2*À+/̀Type Any Character to Continue or ^C to Abort - ͜v̀:*ʷÜ)> ͦ> æ`_O ¿> ͦ:*¯   y >2* :*<2*:***)Y"*BK**"***)`i?:*O+O** :*Og"*DM++ Not Within Tracks 0-**͑ ++ ÷>2*++ READ Failed, Sector may be Invalid ++ :*++ Cannot Write Unless Read Issued ++ M"++ WRITE Failed ++ '+̀l)Introductory HELP on DU3 (Disk Utility) The DU3 program is designed to provide the user with the ability to manipulate information on the disk as easily as the DDT and SID utilities allow the user to manipulate information in memory. The following is a summary of the commands available to the DU3 user. This same list is invoked internally by the ? Command of DU3. For additional information on disk structures and how to use DU3 in general, refer to the file DU3.HLP. >2*$( 2*'+̀l)Operands in brackets [...] are optional @ Repeat Previous Non-@ Command Line +[nn] Step In [nn (decimal)] Sectors -[nn] Step Out [nn (decimal)] Sectors  Note: + or - need not be followed by a "," to delimit commands. # Print Disk Parameters for Current Drive =xxx Search for ASCII xxx from Current Sector  Note: upper/lower case matters. Use for hex:  To find "IN 0" use: =<0> or  "(tab)H,0(CR)(LF)" use: =<9>H,0 *[nn] Repeat [nn (decimal) times] ! Pause for User :ntext Define 'text' to be Macro n n Perform Macro n, 0<=n<=9 :Pn Print Macro n, 0<=n<=9 :Px Print All Macros if x=A or Print Prev Line if x=@$'+̀l) A[ff,tt] ASCII Dump C Change: CHaddr byte byte... (hex) or CAaddr data... (Ascii)  Allowed for imbedded hex. or CHfrom-thru byte e.g. ch0-7f e5 or CAfrom-thru byte D[ff,tt] Dump (Hex and ASCII) E DU3 Editor  Note: Rest of Command Line is Flushed Ffn.ft Find File Gnn CP/M Allocation Group nn (hex) H[ff,tt] Hex Dump L[d] Log in Current Drive or Drive d M[nn] Map [from group nn (hex)]$'+̀l) N Load New Disk P Toggle Printer Switch Q Queue Status; QZ Zero (Empty) Queue QSfn.ft Save Queue as a File on Disk < Save Current Block into Temp > Restore Temp Block B Restore Queue Block G[n] Restore Queue Group Snn Sector nn (decimal) Tnn Track nn (decimal) Unn Set User nn (decimal) for Find command V[nn] View [nn (decimal)] ASCII Blocks R Read Current Block W Write Current Block X Exit Program Z[nn] Sleep [nn (decimal) seconds]$'+̀l)Command Line is of the form: DU3 du? "d" is Logged-In Disk, "u" is Current User Ctrl-C Cancel a function Ctrl-S Suspend output "," Separate commands Examples: g0 and +,d,z2,* Causes: 1. Position to group 0 2. Loops on step in, dump, sleep 2 sec until control-c is typed "nn" usage varies with command as follows: +, -, *, T, S, U, V, Z nn in Decimal (use #nn for Hex) G, M nn in Hexadecimal (use #nn for Decimal) "ff" and "tt" are in Hexadecimal (use #ff or #tt for Decimal)$:*œ)÷ -- DU3 Command Summary -- +*{*yʫ)#x}/o|/g#ɷ|g}o) ¿)}o|gBKx)!) T]x) )*!*~:*w**<"*"*w :I @+-M=3#\ ?$ * !V A CVD E"FjGAH LMN PQ RSATAU VWXX)ZDIRECT[!u)CLOCKna!v)PAGSIZ]!x)MDISKyh!w)MUSER!START1T*+/F##x_*+,~*+-~*++~"+V#^#,*-~!G+V###~G+U-=*-~!r+ͣ-ͣ-ͣ-~r+U-=*-~!ڠ+ͣ-ͣ-ͣ-ͣ-~ʠ+U-=*-~!+ͣ-ͣ-ͣ-ͣ-ͣ-~+U-*-~!+ͣ-ͣ-ͣ-ͣ-ͣ-ͣ-~+U-*-~!1,~2T-##ͣ-~1,6,:T-l-=%-2R-2S-%[,\S,-?,-?,d,2,3,.,+ʮ,>ʛ,rʓ,iʋ,-?,>2S-?,>2R-?,,OҪ,-?,G,-:R-2R-?,,-ø,,d3- 3-0-ø,,,,d3- ,:R-- -:S-:S-- -O:R-+-)-ia'-)-0>-6-z0K-yO-z-~h-#\b-~#-U-zl-Oʍ-*++~ƒ->G͒- „-͚-’- œ-~#\£-#ã-"+"-"-ɢWO*. -*-}-$.--zl-Oʍ-*++~ƒ The files in this library are improved versions of ZCPR3 utility programs. The DIF files allow one to reconstruct the new source code from the source of the original releases of the programs using the public-domain SSED program. There are two new error handlers that are extended versions of ERROR1 and ERROR2. The same new features were added to both. First, they have been made to work properly with ZEX. Before, when an error detected while ZEX was running the error handler would try to get its input from the ZEX character stream -- not at all what the user intended. Now the error handlers switch off ZEX interception of input calls and allow the user to make the response he desires. The second feature is special handling of error situations that occur outside of ZEX with only one command on the line. It is pointless to present the user with the usual four choices (replace this command, go on to next command, replace entire command line, flush entire command line) since they all do effectively the same thing. Now the error handlers simply report the error in this case and let the user go on (that is, they automatically revert to ERROR3-type processing). The disk-utility program has been modified to include a set of permanent macros. These are stored in compacted form near the beginning of the file where they can be patched in easily. When the program is invoked, the initialization code copies these permanent macros into the macro area. The code was modified to allow macros to be included in the command line tail. Jay Sage 1435 Centre Street Newton Centre, MA 02159 voice: 617-965-3552 RCP/M: 617-965-7259