HIST+ UTL} >SID+ COM"PSIDPLUS DOC TRACE+ UTLr : SIDplus Introduction SIDplus was developed as a replacement debugging tool for CP/M users. The programs in the library are not patched, but re-written and enhanced versions of SID and its utilities. The original programs have proved to be very useful, but contain several bugs and some performance problems. In addition, SID only supports the 8080 instruction set. SIDplus resolves these issues by fixing the known problems and adding new features, of which Z80 mode is significant. The SIDplus library includes this document file, and the following program files: SID+ .COM TRACE+ .COM HIST+ .COM All programs are 8080 compatible, and will run under CP/M 2.0, or higher. The same command formats can be entered, except as noted in the sections which follow. You may want to record this information in the Users Guide and Command Summary for future reference. TRACEplus Utility Major Fixes: - the last memory address is preserved (used by A and L command). - only the COLLECT function is allowed from trace mode (T or U command). Improvements: - the wraparound buffer holds 128 more instructions for a total of 256. - an address only backtrace can be forced with the C.DISPLAY,1 command. - the buffer count is listed as part of the display title. HISTplus Utility Major Fixes: - location bounds less than 63 bytes will not cause lock-up during display. - only the COLLECT function is allowed from trace mode (T or U command). Improvements: - trace mode will be interrupted, and a message displayed if any counter will wrap on the next instruction. This gives you a chance to display first. - both the counter range and scale factor are listed as part of the display. SIDplus Utility Major Fixes: - the default DMA buffer address is reset, if changed by the test program. - illegal instructions will not assemble, ex: MOV M,M or LDAX H. - one step trace call (form 4) now works for T,call or U,call commands. - disassembly of instructions will complete, if past end address specified. - if word format dump is used (DW), the ascii display will be in two character multiples to match the hex data. Improvements: - symbol names have been expanded to 16 characters for compatibility with other utilities. - trace mode with identify all 'M=' memory values during decoding. - Use -D... command format to suppress ascii character dump. - Use -Ha command format to suppress symbol display. Z80 Mode: - new command Z or -Z will toggle Z80 and 8080 mode (default Z80). - Z80 instructions use the macro library format to be 8080 compatible. This applies to assembly and disassembly, ex: PUSHIX, STY r,d or DJNZ adr. - additional Z80 instructions are LHLW or SHLW adr (EDh series). - the set bit instruction may be entered as SET or SETB b,r (CBh series). - during disassembly, the index displacement byte is shown enclosed within parentheses, ex: ADDX (80). - the index registers are not explicitly supported to be 8080 compatible. However, all Z80 instructions are handled by the trace decoder, in Z80 mode. A Closing Thought You may be curious why I rewrote these programs. The answer is simple. Like most C-128 users, I was introduced to CP/M to late. As a result, quality software and reference manuals are hard to get. It is up to us, the users, to develop the software tools we need. If you have any questions or comments, send an E-Mail, or write to: John J. Examilotis 127 Dutch Road East Brunswick, NJ 08816 * donations from supporters are always appreciated * "ÙSID+ Version 3.1COPYRIGHT 1991, by JJEX SOFTWARE151282n.9SIDplus by Jjex ver. 3.1$1 !~=W!x ~#ôbx {~#o}o.Û ä yͧ , ʘ   ͤ ʘ <! 6 # O! wͤ m# ʘ [: 0 Ø Ͱ =˜ N#Fỳ˜ 80* {²#z+++ ¨ >><2G >*2# # : <ʘ !b ͣ˜ y<ʘ !t Ϳ˜ yʘ ʘ =<ʘ ! Ϳ˜ y@ʘ @ʘ ><ʘ sҘ ͖O: Ø !  w# “ ˜ w!R ͣ˜ y͖͋̀̀*#yOx<˜  :XY˜ x*w#"6! Ϳ&y  "(@!  Ϳ=yھ !< ͿP>!t Ϳ^H!~ ͺlH! ͺ}##ͿŠw! Ϳ›3! Ϳ@ ʭʘ ͖G>x ! ͿB y*õ͵6! Ϳ  V_͜ ! Ϳ€y%O=͖O:R;͏y<O: kyt:Btm4mA !@ Ϳ˜  ʢ ʳy=һçF͖X͏pê4ڪͰ ˜ ͇˜ ͇˜ ͤ . ?ʘ :w!!&  Ϳ !N Ϳ(͏!f Ϳ@̀x!j Ϳa͖G@vʘ ! Ϳw y͖GT! Ϳ ͖! Ϳ«͖͏! ͿyھG*͜O"yʘ 6! Ϳ͏Ҙ ͖! Ϳ  3͜: J%ͳ/C:ͳyxR˜ ͋* b** {za*~#" <ryAOGƐ'@'OxƐ'@'OO >! 6 #=«*»yw#´N#yO N# :w!z8O!D N#N :w!hSP1* |} G_Xͭ X:qYMW!  ʉ# } 2y Ҡ! J:ʰGW!  ^# ¹d# j# @p ByDڍp GW@Rͧ;   Bͺ; GW! # # ) zvp p2zFU_z4jp ! j !< j !r y`͝Ozpp !  Cʝ! O! G 8p ڴ>! Ýʹ͑,! yO`ad͝J ! yadÝ ! dyX! OG2>$zh,(:ͪ )$:$B $BGͪ =G2GWʢz :̓ :̓ s z0ʐd@һzͧBͺB!9":!"<<2* Ͷ !~5 * ͹ 1 7:w! sMW! g #   X # * D # 5 @*  z = = z zʻ ʰ ʥ ʖ z‹ z=!  !t ! CJ JJ R! zʋ z=    ,J ! h,^ !  ! hz8!n ; !j h,zh!N G_GWͭ !& Gͪ ! z zͪ ! :ͪ > ç ! zͪ 1?*!9"4"͡ *" ë *'/7?v"*2:EI SPHLDI XCHGPCHLXTHLRET HLT CMC STC CMA DAA RAR RAL RRC RLC NOP CPI ORI XRI ANI SBI IN SUI OUT ACI ADI CALLJMP LDA STA LHLDSHLDMOV ADD ADC SUB SBB ANA XRA ORA CMP INR DCR MVI LXI STAXINX DAD LDAXDCX RST POP PUSH (08DEFGMOVW^_go#+!"*JRC JRNCJRZ JRNZJR DJNZEXX EXAFRLD RRD LDARIM2 LDAIIM1 STARRETISTAIIM0 RETNNEG OUTDOUTIINDRCCDRLDDRINIRCCIRLDIRIND CCD LDD INI CCI LDI OUTDR OUTIR INP OUTPDSBCDADCSBCDLBCDSDEDLDEDSHLWLHLWSSPDLSPDRLC*RRC*RAL*RAR*SLA*SRA*SRL*BIT*RES*SET*SPI*PCI*XTI*PUSHI*POPI* DCXI* INXI* LI*DSI*DLXI*DAD*LD* ST* ADD*ADC*SUB*SBC*AND*XOR*OR* CMP*INR*DCR*MVI*NZZ NCC POPEP M B C D E H L M A B D H SP PSW B D IX SP IY ??= ü Ý|DBðü3d""*" ! "!""r!2"2v!2w!2!2!!" "T!"""t!"!!1"!++"""!>28! "9:] G:e .:l A:u A!f1"3ļ )>#|D G! "6-s5DA_!^#V/Ur6'Vo0S~Ͱ: "HG=ͼ" GͰͼ=ͼ= ͼ!G2V!͡;ͼ+"T!=;ͼ=H*T!H!"W!3G*W!*T!"Y!?G)*T!{>::"ʿ^#V#{ ͒ڠ{™=2V!yy ¦~ #*W!?y "T!: "K*Y!̓*W!?G K̓:V!G2V!:#"W:e D:u O!f͋|0GG+G}]2]!)Ͱ2^!ͼͼ"_!ͼ"a!DMÞ!]!6ʺڨ""=ʺ=ʺYP!!~#^#V:]!*"{z"c!~62e!#w6 ¿1"*"*"!"~4)#~#F#)x)~#s#r#w>Ͱͼ=f=ͼ){ᯕo>g{G)B>#!f!^#V#0}o|gڐ Ãxy0ʮGúyúºGç|zG{ G'{>'G*r!##V+^+N+yG){ ~+3G: "WGͰKͼ" =Kͼ"=M> 2G͋+G0GG w#YͰͼ!=: "ʐͼÚ!š!|"p!!!~#~#Vz:p!wG §:p!!!~:p!w#s#rG !!~$: "6$)~#^#VB G:#"!\6#>  w# D>w# N6Ͱ!f=*""p!͑!lT"~# w:]?Uf!"!>HXE͵*p!\ͼ Uw# ¼*?ҩ!"!"t!͏:WG_GGO {x!i`""UGGw#G͏ͯ͏ͯ1GтWx!e:v!H>ULT͵!T"\~# v2|:] !x!f<͏!ڗ41_*p!͏ ͏ ښû*+͏  !w{*#^#Vr+s+6*"s#s#r×(!*"*"r!G!!*!{*t!{*"{*+{G͡=ͼ){:"x^#V{|~|D .™:#"G>."®P ]w#ßͳ=ͼ:"s#r#]}w#:"]#]>>2!͡!"!#ͼ}= =ͼ"!"!2^!}×(:#"͑!\>2|!"!*!"!Ͱ:"]*""!*""!*!!"!\ͩ͝<*!~# „\ͅ*!#"!:|\y)*!{!!G:!2:!2>2::>2D }G !}# D )M|ͰG=ͼxc|}gA>]Ag}]G]s|}!"wG4s#rGD : "2w!G:[ʯ_!~![4\ͼ 2[Ú>)>?G!e>Cw#>Ow#>Mw!u>Sw#>Yw#>Mw., * w#? ? *$??r# ${zPY!?|}>2v!! ""r!#"!Ow #w bq!\6 ""ͼ !$"" "ͰͼͼͼD!"6W³6D!"6# ,>2" D D "= ?:@w#=$G6#.?6# 5xPa_!#"~> d5* "~#" "ů2[\ͼ ͼ ͼ ͼ ͼ ͼ !ex#y#*t!}|"t!*!}|"!:v!!> _ͼ ~# 07  > >  ͼ {: ")!>.^+~Z: ")!)Y>:|}ҍ >.*W!}o|/+- , 0 ^#V#D*r!Ny* "*"" ͝ +D ͠D#^#V"""" "~/o>g++!.@@^#V=O^'sP 'nP͠'S_U#—D͠ʕ0 )DM)) O x^®*"^#V#D^ʠͯ))))oD͠®"!s#r#!"4-+*!(+D( -D(y_xW!XN!"~ 1)!_^!"4^#Vx`&>-~~>=v!"~E{)!}M#x ҢڈÈC*"" !6+"W!*"~#͒:"^#VBv~*"~Gxv@@0xvv@x80vLx6L4@5R>=*"~*"evx*"e*": "v)!vQCZMEIABDHSP!"!2!""+""!91"*"~:e!2]!! "~#^#V#~ 5!"~6=G#^#V#~x#""! N#F+͒*">7×:!!!~~#~#V*"~z~~=K=2!cwc: "cC×)<!*"B}× '3ʩ=C×*"d}×:]!*a!MD*_!:^!7×)5!"!͒2!>**"" A*""T!G PASS !!~*!+"!|w=2!~ !!:w!"~##1"Z:e!*c!w2e!*"F#!"s!Z^#Vz z w w m z z  h ͖} ͡} : : ^#V#Ì*"^#V͖ʵ> } xÁ 8_} *"͌} Æ~#_͌> } EʆMʆCw } Gw m !"44!w "w 4Fz z x4z 6w } :"?*"###} ͡> ><7*!| !"N *"! ¬ !!ü )>#!!:!!" V >!!=_~/w/w{ V ͡=!YP " *r!##F+N+~R!/o>g{M!zM!<33.!'d  SYMBOLS NEXT MSZE PC END COUNTER AT MAXIMUM. UTILITY CALL ERROR. h record(s) written.@ "B"HI"H HI!$D @B $ HD@!H$$$$HI $$HBI!$ !$B $ $I $$$I $DBI! !$$!$I $ $A"I !$H@BI I HDBBI@@@@!@!I BDBI B@HI! "A!$ !B@ $HHHIB@$I"@$BHHB@DI$@B! H"I$"I $I! @DA! I $HI !$!$I $HI$ H$I"I$$! $I $I$I $I ! $HHI ! UUUUUT$II$I $$"I!" IDH$$H$"B"D $DD IH H  B"!$BB $BHA HI$"!$II $IHDH  "@$B B@$A"D$I"B!D$D $I$$ID H!"A""DH "H$ II$HDDHA$HHDDH@$""@ B@HD@@ @D$D$!BI " "!B !!HB!D@@$BHI" I!$IDHD@@@!$D$IBDHB ! ! @I$H @I $H!! $$$I"I$! !$I@!BD UUUU$$A$ A BB! B AIA $ @@@PCOPYRIGHT 1991, by JJEX SOFTWARE!y~[=W!xp ~#cbxʒ {…~#o}oҎt.ZYALPSID'TCELLOC$LAITINI!h :z7{ *9 *?> *> **"!"l?!0y?$0?'0::¡>å2?!"!"!">*|#"*s,"*r,":O*E|Kx7>h*?2y* "**(x^-V-^yM!~4K0> *X" >2#yi*" > INITIAL = COLLECT = DISPLAY = "-A" IN EFFECT, ADDRESS BACKTRACE READY FOR SYMBOLIC BACKTRACEMAX COLLECTED FOR BACKTRACE:  A B $I$ H"BB II"! HI $[PCOPYRIGHT 1991, by JJEX SOFTWARE!y~[=W!xp ~#cbxʒ {…~#o}oҎt.ÄYALPSID'TCELLOC$LAITINI!ÛEUU U Uz<{<U*9 {_zW}l&))o> 6> 66x*"!"Ùx'x*Lړ“R"R#"Zړa#"Y!6# x!Bx$Bx'B>*ZC*ZC*YZ, "! ^#Vr+szC yɯɯ!@^#V#Zb Ra#"W@x*YB]xBnoxB2**Z`i~#!~6x*Yà6nB*Y^#V#àn>{> 6*WZ>*6 ERROR - FORM IS X,Y TYPE HISTOGRAM BOUNDS HISTOGRAM: RANGE FACTOR = , SCALE FACTOR = ADDR RELATIVE FREQUENCY, LARGEST VALUE = .INITIAL = .COLLECT = .DISPLAY = .... AB@!H$$DBDHI$@HIHD$ $ H@! $ate alue from a memory location at assembly time. Its use should be restricted to very special occasions since the resulting code will function properly only if the same values exist at runtime. Its primary use is to create system specific extensions, or overlays. EXAMPLE: LD HL,(06) ; Runtime BDOS entry LD DE,@6 ; Assembly Time BDOS entry OR A SBC HL,DE ; test runtime compatibility JP NZ,IMPROPER PAGE 7 ? Is a kludged oper