PROBE COMPROBE DOCPROBE BUG8 ;b͸{2B2B@Bw{ÖüH!K]jU 2͵ ^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2hZZk:h|/g}/o#|/g}/o#:h<2hqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2hZZ͉M|}ȯ|g}o)|/g}/o#z/W{/_!9~#fo! ! ! ! ! ! P!9~#A!9"w**w"j!z*"d!"f!Y"H>2^>2a>2`2c>2s2t>2r>2v!"@!"D!@"B!"F !F#x:~#!|2i~# :" 2i +}|~#:G:ix."2i+w# +6#!6#@A2n2?*j**|+`"d!"f!!>ڌo&͖=}  w~2ʸͼ56!+W ?_!~7z?ͧ:>͞@w#5.ww#w#w#w*>?@͌>w#͌5> w#@ͧ͵g 2q&0OxG͵j/ʆSx\͞.7:77!a{  ʨ ʨ0:?ŷO !y$ 7o&))T])))!y 2p_ :p!C 4b!m9 Do you wish to PROBE a drive's parameters (Y/N) ? Y Which drive do you wish to PROBE (A - P) ? AA For drive %c:, the disk parameter block address is %05x hex The disk parameter block as it appears in memory (in hex): %04x %02x Parameter (SYM) Hex Decimal [ Binary ] Sectors per Track (SPT) = %04x %4d Block Shift Factor (BSH) = %02x %4d Allocation Block Mask (BLM) = %02x %4d Extent Mask (EXM) = %02x %4d Disk Size Maximum (DSM) = %04x %4d Dire::ͤ $$͔A!k ͽ;! ͽ;! ͽ;! ͽ;!G ͽ;! ͽ;! ͽ;! ͽ;!6 ͽ;!v ͽ;! ͽ;! ͽ;!" ͽ;!b ͽ;! ͽ;! ͽ;! ͽ;!> ͽ;!{ ͽ; PROBE Version 1.01 2 Sep 1984 PROBE will tell you what version of CP/M or MP/M you are running, and display the I/O byte if appropriate. It then displays the addresses of the CCP, BDOS, and BIOS. The BIOS jump table will next be displayed including the extended BIOS calls for CP/M+, and XIOS calls if running MP/M. It then displays the disk parameter blocks (DPB's), disk parameter headers (DPH's), group size, total disk size, number of directory entries, space required for directory entries, total usable space on the disk, and the disk space allocation vectors for any selected drive (A: through P:). PROBE was written in 'c' to help decode the disk formats of a number of different machines to aid in transportability. It was inspired by BDLOC, TELL, ALLOC, and a number of other public domain CP/M utilities. Paul Sittler - My Word!! RCP/M (409) 845-0510 (late nights) Veterinary Public Health RCP/M (409) 845-0509 (24 hours) Dept of Veterinary Public Health, Texas A&M University College Station, Texas 77840-4468 !9DM!!7 s#r!!9 s#r!!; s#r!!= s#r!!? s#r!!A s#r!!C s#r!!E s#r!!G s#r! !I s#r!!K s#r!!M s#r!!O s#r!!Q s#r!!S s#r!"!U s#r*~#fo|w!&ͽ;!!͗A`is! `in& ;`in&!Mͽ;! `in&!vͽ;`in&|g}o! s`in&0|g}o! s`in& |g}o!! s`in&|g}o!, s! ! n& ;! ! n& ;!" !! n& ;!- !, n& ;! n&)!7 ~#fo! ! n&!ͽ;! n&)!? ~#fo! ! n&!ͽ;!! n&)!G ~#fo!) !! n&! ͽ;!, n&)!O ~#fo!4 !, n&!Gͽ;!ͽ;! `in&!ͽ;!ͽ;!ͽ;!4 !) ! ! !"ͽ;!Gͽ;!lͽ;!ͽ;!ͽ;!, n&)!O ~#fo!! n&)!G ~#fo! n&)!? ~#fo! n&)!7 ~#fo! !ͽ;!W9TTYCRTLPTUL1TTYPTPUP1UP2TTYPTRUR1UR2TTYCRTBATUC1 MP/M does not implement the I/O BYTE I/O Byte value is currently %d decimal, %x hexadecimal or [%s] binary LST: is currently %02x hex or [%s ] binary, or %s: PUN: is currently %02x hex or [ %s ] binary, or %s: RDR: is currently %02x hex or [ %s ] binary, or %s: CON: is currently %02x hex or [ %s] binary, or %s: ----------- Making the IOBYTE %02x hex or [%s] binary where, for the following devices: Device LST: PUN: RDR: CON: Value %s %s %s %s 00 assigns TTY: TTY: TTY: TTY: 01 assigns CRT: PTP: PTR: CRT: 10 assigns LPT: UP1: UR1: BAT: 11 assigns UL1: UP2: UR2: UC1: [%s] assigns %3s: %3s: %3s: %3s: !9DM!ͽ;!;ͽ;ͨA;!B s!B n} <!B 6YR!B n}YR!B n}N!B n}N`!?ͽ;ͨA;!B s!B n} Š!B 6!B n&|ڪ!B n&|ڵ!oͽ;h!B n&!B sh!!B n&! A!H s#r!H ~#fo| !B n&!͗A!!͗AA!? s!!͗A!F s#r!F ~#fo!@ s#r!C 6!C n&|҉!C n&! !@ ~#fo!C n&ns!C 4M!@ ^#Vr+sn!@ ^#Vr+sn&!J s#r!@ ^#Vr+sn!L s!@ ^#Vr+sn!M s!@ ^#Vr+sn!N s!@ ^#Vr+sn!@ ^#Vr+sn&!O s#r!@ ^#Vr+sn!@ ^#Vr+sn&!Q s#r!@ ^#Vr+sn!S s!@ ^#Vr+sn!T s!@ ^#Vr+sn!@ ^#Vr+sn&!U s#r!@ ^#Vr+sn!@ ^#Vr+sn&!W s#r`i!S n& ;! !T n& ;!F ~#fo!? n&!sͽ;!ͽ;!F ~#fo!ͽ;!C 6!C n&|q!C n&! n&!ͽ;!C 4?!ͽ;!J ~#fo!J ~#fo!9ͽ;!L n&!L n&!fͽ;!M n&!M n&!ͽ;!N n&!N n&!ͽ;!O ~#fo!O ~#fo!ͽ;!Q ~#fo!Q ~#fo! ͽ;`i!S n&!S n&!Mͽ;! !T n&!T n&!ͽ;!U ~#fo!U ~#fo!ͽ;!W ~#fo!W ~#fo!ͽ;! ͽ;!= ͽ;!W ~#fo!U ~#fo!T n&!S n&!Q ~#fo!O ~#fo!N n&!M n&!L n&!J ~#fo!q ͽ;!9!H ~#fo!? n&! ͽ;!H ~#fo!@ s#r!C 6!C n&|q!C n&!. !@ ~#fo!C n&ns!C 45! ͽ;!H ~#fo!,!ͽ;!C 6!C n&|!C n&!. n&!4!ͽ;!C 4Ñ!H ~#fo!@ s#r!@ ^#Vr+sn!@ ^#Vr+sn&!Y s#r!@ ~#fos#r!@ ^#Vr+sn!@ ^#Vr+sn&![ s#r!@ ^#Vr+sn!@ ^#Vr+sn&!] s#r!@ ^#Vr+sn!@ ^#Vr+sn&!_ s#r!@ ^#Vr+sn!@ ^#Vr+sn&!a s#r!:!ͽ;!Y ~#fo!l!ͽ;![ ~#fo!!ͽ;!] ~#fo!!ͽ;!_ ~#fo!"ͽ;!a ~#fo!4"ͽ;!L n&+++!c s#r!O ~#fo#!c ~#fo?!e s#r!Q ~#fo#!g s#r!Q ~#fo#!i s#r!e ~#fo!i ~#fo!k s#r!c ~#fo!f"ͽ;!e ~#fo!"ͽ;!g ~#fo!"ͽ;!i ~#fo!#ͽ;!k ~#fo!H#ͽ;!Y ~#fo!@ s#r!a ~#fo!@ s#r!O ~#fo#!D s#r!C 6!C n!D ~#fo!C n& |›!c ~#fo!#ͽ;!#ͽ;!#ͽ;!C n&|!C n&)))!$ͽ;! !@ ~#fo!C n&n& ;! !$ͽ;!C 4O !m9 Do you wish to PROBE a drive's parameters (Y/N) ? Y Which drive do you wish to PROBE (A - P) ? AA For drive %c:, the disk parameter block address is %05x hex The disk parameter block as it appears in memory (in hex): %04x %02x Parameter (SYM) Hex Decimal [ Binary ] Sectors per Track (SPT) = %04x %4d Block Shift Factor (BSH) = %02x %4d Allocation Block Mask (BLM) = %02x %4d Extent Mask (EXM) = %02x %4d Disk Size Maximum (DSM) = %04x %4d Directory Maximum -1 (DRM) = %04x %4d Allocation Mask 0 (AL0) = %02x %4d [%s] Allocation Mask 1 (AL1) = %02x %4d [%s] Directory Check Size (CKS) = %04x %4d System Tracks Offset (OFF) = %04x %4d The whole disk parameter block looks like: SPT: BSH: BLM: EXM: DSM: DRM: AL0: AL1: CKS: OFF: %04x %02x %02x %02x %04x %04x %02x %02x %04x %04x For drive %c:, the disk parameter header address is %05x hex The disk parameter header as it appears in memory (in hex): %04x %02x Address Vector Description (SYM) Hex Log to physical sector trans (XLT) = %04x Directory buffer scratchpad (DIRBUF) = %04x DPB address in DPH (DPB) = %04x Check changed disk scratchpad (CSV) = %04x Disk space allocation vector (ALV) = %04x The data allocation block or group size is %5d Kbytes The total disk size is . . . . . . . . . . %5d Kbytes The # of directory entries blocked for is %5d Entries which requires . . . . . . . . . . . . . . %5d Kbytes Leaving a useful disk capacity of. . . . . %5d Kbytes %dK Disk Allocation Block Number (Hex) 0123 4567 89AB CDEF 0123 4567 89AB CDEF ----- ---- ---- ---- ---- ---- ---- ---- ---- %04x: %s !9DM!+0ͽ;!h0ͽ;!0ͽ;`i6#6`i^#Vr+sn`i^#Vr+sn&! s#r! ~#fo+++! s#r`i6#6`i^#Vr+sn`i^#Vr+sn&! s#r! ~#fo! s#r! ~#fo#`is#r`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&! s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!" s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!$ s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!& s#r*~#fo|+`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!( s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!* s#r*~#fo|ҝ(* n}+`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!, s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!. s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!0 s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!2 s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!4 s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!6 s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!8 s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!: s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!< s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!> s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!@ s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!B s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!D s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!F s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!H s#r`i^#Vr+s`i^#Vr+sn`i^#Vr+sn&!J s#r! ~#fo!0ͽ;! ~#fo! 1ͽ;! ~#fo!<1ͽ;! ~#fo!n1ͽ;! ~#fo!1ͽ;! ~#fo!1ͽ;! ~#fo!2ͽ;! ~#fo!62ͽ;! ~#fo!h2ͽ;! ~#fo!2ͽ;! ~#fo!2ͽ;! ~#fo!2ͽ;! ~#fo!03ͽ;! ~#fo!b3ͽ;! ~#fo!3ͽ;! ~#fo!3ͽ;!" ~#fo!3ͽ;!$ ~#fo!*4ͽ;!& ~#fo!\4ͽ;*~#fo|"0!( ~#fo!4ͽ;!* ~#fo!4ͽ;* n}.!4ͽ;!'5ͽ;!\5ͽ;!5ͽ;!, ~#fo!5ͽ;!. ~#fo!5ͽ;!0 ~#fo!6ͽ;!2 ~#fo!K6ͽ;!4 ~#fo!6ͽ;!6 ~#fo!6ͽ;!8 ~#fo!6ͽ;!: ~#fo!7ͽ;!< ~#fo!O7ͽ;!> ~#fo!7ͽ;!@ ~#fo!7ͽ;!B ~#fo!7ͽ;!D ~#fo!8ͽ;!F ~#fo!S8ͽ;!H ~#fo!8ͽ;!J ~#fo!8ͽ;*~#fo|"0!8ͽ;!, ~#fo!9ͽ;!. ~#fo!O9ͽ;!0 ~#fo!9ͽ;!2 ~#fo!9ͽ;!4 ~#fo!9ͽ;!6 ~#fo!V/Ê/ Maximum console number check routine at: %04xH.ͽ;!8 ~#fo!// System initialization cold boot routine at: %04xH.ͽ;!: ~#fo!/0 Optional idle procedure routine at: %04xH.ͽ;!L9 This portion will tell you where your CCP starts, what your BDOS entry address is, and where your CBIOS jump table begins. The CBIOS jump table is also displayed. Your CCP beginning address is: %04xH. Your BDOS beginning address is: %04xH. Your BDOS entry address is: %04xH. Your CBIOS jump table begins at: %04xH. Cold start routine address is: %04xH. Warm start routine address is: %04xH. Console Status routine address is: %04xH. Console Input routine (waits for char.): %04xH. Console Output routine address is: %04xH. List device output routine address is: %04xH. Punch device output routine address is: %04xH. Reader device input routine address is: %04xH. Home disk routine address is: %04xH. Select disk routine address is: %04xH. The set track disk routine address is: %04xH. The set sector disk routine address is: %04xH. The set DMA disk routine address is: %04xH. The read disk routine address is: %04xH. The write disk routine address is: %04xH. List device status routine address is: %04xH. Sector translate disk routine address is: %04xH. CP/M+ (3.x) extended bios calls follow. Note that some of these may NOT have been implemented by your system integrator. Check carefully with your manual before trying to use them. Console output status check routine at: %04xH. Aux device input status check routine at: %04xH. Aux device output status check routine at: %04xH. Character i/o table addr check routine at: %04xH. Character i/o devices init routine at: %04xH. Get disk drive table address routine at: %04xH. Set # of multi-R/W sectors routine at: %04xH. Flush host buffer routine address at: %04xH. Memory-to-memory block move routine at: %04xH. Get or set time clock routine at: %04xH. Set memory bank -- absolute routine at: %04xH. Set mem bank for next DMA move routine at: %04xH. Set mem bank #s for next move routine at: %04xH. Bios call reserved for system integr at: %04xH. Bios call 1 reserved for future use %04xH. Bios call 2 reserved for future use %04xH. MP/M II XIOS call jump addresses follow. Select memory segment routine at: %04xH. Device Polling routine at: %04xH. Start clock routine at: %04xH. Stop clock routine at: %04xH. Exit critical region routine at: %04xH.!! ͗A*s#r*~#fo|M:!:P:!:!:*## <*~#fo|‚:* 6* 6ü:*~#fo|g}o* s*~#fo|g}o* sMP/MCP/M%s* n&* n&*##!:ͽ; This is %s %d.%d. !9DM`iw#w`i~#fo|Ҧ;`i~#fo++++|N;! ~#fo`i^#Vr+s6 ! n&|g}o|{;! ~#fo`i~#fo61&Î;! ~#fo`i~#fo60! n&)s`i^#Vr+s;! ~#fo 6!9!9DM!B! /ʦ?ì?͐~#fo|Ҥ=! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 ü=! 6ü=! 6! ~#fo! n&! ^#Vr+s~#fo! f@ѯgs#rå>! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+så>! n}@>! 6#6! ^#Vr+s~#fo! s#r͐n}ʥ>͐|ʥ>! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s[>͐6! ! s#r! n}?! ^#Vr+s!|?͐͐! n}>!0>! !?!9~#fo#|?!@>͐n}W?͐͐! ^#Vr+sn&!E?!9~#fo#|T?!@?! n}ʣ?! ^#Vr+s!|ڣ?͐͐! !?!9~#fo#| ?!@a??!@͐͐`in&!?!9~#fo#|?!@@͐͐`in&!?!9~#fo#|@!@^ _ &B the addresses of the CCP, BDOS, and BIOS. The BIOS jump table will next be d/**********************************************************************/ /* PROBE.C Version 1 Revision 01 2 September 84 */ /**********************************************************************/ /* */ /* Copyright (c) 1984 by Paul M. Sittler */ /* */ /* Relased for non-commercial use. Commercial use is undesired. */ /**********************************************************************/ PROBE will tell you what version of CP/M or MP/M you are running, and display the I/O byte if appropriate. It then displays the addresses of the CCP, BDOS, and BIOS. The BIOS jump table will next be displayed including the extended BIOS calls for CP/M+, and XIOS calls if running MP/M. It then displays the disk parameter blocks (DPB's), disk parame- ter headers (DPH's), group size, total disk size, number of directory entries, space required for directory entries, total usable space on the disk, and the disk space allocation vectors for any selected drive (A: through P:). PROBE was written in 'C' to help decode the disk formats of a num- ber of different machines to aid in transportability. It was inspired by BDLOC, TELL, ALLOC and a number of other public domain CP/M utilities. My method of use of PROBE has been to move it to the target machine and run it after pressing a CTRL-P to get a hard copy print of the tar- get machine's disk parameter blocks. Because of this modus operandi, I have not used any pretty screen stuff. You may wish to be prepared to hit the old control-S as it starts scrolling by. I have used the infor- mation gathered this way to write a "Uniform(tm)"-like utility (also in 'C') to change my disk parameter blocks to read/write a whole bunch of floppy formats. This works very nicely on my machine (Heath H89 using the CDR soft-sectored controller) and I have plans to move it to Osborne and Kaypro, as well as certain others. Paul Sittler - My Word!! RCP/M (409) 845-0510 (late nights) Veterinary Public Health RCP/M (409) 845-0509 (24 hours) Dept of Veterinary Public Health, Texas A&M University College Station, Texas 77840-4468 Bugs in PROBE: 1. PROBE will not detect media changes. Changing from SSDD to DSDD will still bring SSDD data on the screen. Might have to explicitly reset the disk system before logging a previously logged drive. 2. On very large disks, PROBE goes into a loop, displaying the ALV data over and over again, until aborted by ^C. This was noticed on an 8MB drive with 2048 4k groups.  @ @ GONZALEZ @ @ GONZALEZ @ @GONZALEZ@Z@EL PASO, TEXAS @ 3 @080284@225050@ 2