mar 4 2016 HRJ Working with Kipp Yeakel single-density disks sent mar 2014, processed Mar 2016 Boot Z-100 with CP/M-85 format disk B with empty 5.25" 360K CP/M diskette 1) mount C: drive of Z100 with Kipp 8" SSSD disk. 2) mount B: drive of Z-100 with empty 5.25" DSDD disk. Make up a file of about the right size on the B disk >A:save 30 b:iboot.com that's 30 X 256 bytes >a:dump b:iboot.bin performs a dump from 0 to 1DFFH - 8K. 3) run DU75 as follows a:>du75 lc load C - Kipp's SSSD 8" disk t0;s1;rd start of boot tracks 26 X 128 byte sectors per track R;<<;+;/54 read 2 X 26 sectors of 128 bytes, two boot tracks lb load B drive, DSDD CP/M 85 disk g4 group 4 is first file space area >>w;+;\54 write 54 sectors to disk into group 4, 5, 6, 7 t2;s1;rd look at first directory entry should show IBOOT.COM as entry with 04 05 06 07 groups x exit DU a:> 4) remove B: CP/M diskette and transfer to MS-DOS diskette I use 22disk under MS-DOS to read the heath format disk and write to 3.5" MS-DOS 5) read off MS-DOS diskettte to desktop Windows system and analyze. For the CP/M files on the Kipp SSSD 8" disk: 1) on Z-100 system, put fresh 5.25" DSDD disk on B: put Kipp SSSD 8" disk on c: 2) use PIP to copy from C: to B: 3) put 5.25" CP/M 85 disk on MS-DOS system to read and copy under 22DISK to 3.5" MS-DOS floppy (22DISK changes .COM to .CPM when transferring to MS-DOS). 4) read MS-DOS floppy to move files onto Windows desktop system for analysis. BOOT.SRC IASM.CPM IBOOT.BIN <--copy of boot tracks IFOR2.CPM ISYS.CPM MYIDE.CPM MYIO.CPM PCGET.CPM PCPUT.CPM PICO.SRC STARTUP.CPM SYSGEN.CPM USBGET.CPM XBIOS.SRC IBOOT (boot track) analysis with hex-dump program ------------------------------ sector 1 has bytes 80 DB 00 F2 01 1A 01 1A those direct the ROM to read single density and 26 sectors from two tracks. sector 2 (80H in the dump) C3 5C DF C3 58 DF 7F 07 "startup" are jumps at the start of CCP and the command to load STARTUP.COM which brings in the large BIOS after boot. the hex dump looks like a typical CP/M boot track dump. At 1680H is the jump table for the "tiny BIOS": Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00001680 C3 CC F2 C3 CC F2 C3 58 F3 C3 3C F3 C3 47 F3 C3 ÃÌòÃÌòÃXóÃ<óÃGóà 00001690 C6 F2 C3 C6 F2 C3 C6 F2 C3 54 F4 C3 6B F3 C3 76 ÆòÃÆòÃÆòÃTôÃkóÃv 000016A0 F3 C3 7B F3 C3 87 F3 C3 93 F3 C3 C6 F2 C3 C6 F2 óÃ{óÇóÓóÃÆòÃÆò 000016B0 C3 8D F3 43 F2 00 00 00 00 00 00 88 F7 99 F2 2D ÃóCò ˆ÷™ò- which shows the BIOS gets moved to F280 or thereabouts. Kipp's disk has a PICO.SRC soruce file for it's "tiny BIOS" which starts with this code: ............ jmp Boot ; Cold start routine. WBootE jmp Boot jmp ConSt ; Returns status of console input device. jmp ConIn ; Read a character from the console. jmp ConOut ; Prints a character on the console output. (other jumps) ......... in the IBOOT.BIN we can look and see that Boot is F2CC, Const is at F358, conin at F33C, conout at F347. The PICO.SRC shows: ............ Error lxi h,'BE' ; 'Bad BIOS call' jmp PMsg boot lxi sp,128 ; Oh, that's fine. xra a ;zero in the accum sta iobyte ;clear the iobyte sta CurDen ; Current density := single. sta cdisk ;select disk zero sta Drive sta last ; last read track (sector unnecessary) sta usart ; usart existance flag out ViCom out ZiCom ; Reset both interrupt controllers. out HiDMA ; upper address byte always 0 ............ In the hex dump, look for the "EB" and look for the LXI instruction 21 before it: Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00001740 80 00 20 00 01 00 21 45 42 C3 73 F5 31 80 00 AF € !EBÃsõ1€ ¯ 00001750 32 03 00 32 83 F5 32 04 00 32 64 F8 32 60 F8 32 2 2ƒõ2 2dø2`ø2 00001760 7F F5 D3 17 D3 E1 D3 B8 21 5D F3 0E 03 CD 0E F5 õÓ ÓáÓ¸!]ó Í õ 00001770 3E 27 D3 03 DB 03 FE 27 20 1D 3E 4E D3 02 DB FF >'Ó Û þ' >NÓ Ûÿ This looks pretty familar, just like the Robinson disk. I've copied that same disassembly and dump below. .............................. 1746: 21 45 42 lxi h,'BE' 1749: c3 73 F5 jmp 0F573H So dump address 1680 corresponds to BIOS location at F200H so console code at F33CH would be 1680H+013CH = 1780+3C= 17BC Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 000017B0 F3 21 4E 4F CD 73 F5 0E 00 C3 00 DC DB 01 E6 02 ó!NOÍsõ à ÜÛ æ 000017C0 28 FA DB 00 E6 7F C9 3A 7F F5 B7 C8 DB 01 E6 01 (úÛ æÉ:õ·ÈÛ æ 000017D0 28 F5 79 E6 7F D3 00 C9 DB 01 E6 02 C9 03 8E FE (õyæÓ ÉÛ æ É Žþ 000017E0 08 2A 86 F5 7D D3 BC 7C D3 BA C9 79 32 64 F8 CD *†õ}Ó¼|ÓºÉy2døÍ 000017F0 A4 F4 21 33 F2 C9 79 32 5E F8 C9 79 32 67 F8 32 ¤ô!3òÉy2^øÉy2gø2 17BC: DB 01 yy: in 01 ;conin E6 02 ani 02 28 FA jrz yy DB 00 in 00 E6 7F ani 7F C9 ret 17C7: 3A 7F F5 xx: lda F57F ;conout B7 ora a C8 rz DB 01 in 01 E6 01 ani 01 28 F5 jrz xx 79 mov a,c E6 F7 ani F7 D3 00 out 00 c9 ret 17D8: DB 01 in 01 ;const E6 02 ani 02 c9 ret ......................... So! Both the Robinson disk and the Kipp disk, use a similar "tiny BIOS" or "PICO BIOS" in the boot tracks. The Robinson disk, loads in an ISTARTUP.COM which begins with a heater that identifies it with a jump instruction and a "4hFST". The Kipp disk, loads in a STARTUP.COM file. ------------------------------------------------------- Look at the STARTUP.COM file with a hex dump. The hex dump revieals, at 200H: Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 000001F0 F3 CD 58 FA 3A 04 00 4F C3 00 DC 0D 0A 43 50 2F óÍXú: OÃ Ü CP/ 00000200 4D 20 32 2E 32 2C 20 42 49 4F 53 20 76 65 72 20 M 2.2, BIOS ver 00000210 33 2E 64 20 49 74 68 61 63 61 20 49 6E 74 65 72 3.d Ithaca Inter 00000220 53 79 73 74 65 6D 73 2C 20 49 6E 63 2E 80 3E FF Systems, Inc.€>ÿ ..that this is a BIOS version 3.d And if I check the files on the Kipp disk, there's a XBIOS.SRC which says: ; CP/M BIOS ver 3.d Ithaca InterSystems Inc. ; written by Robert Bedichek, 1980 ; edited by Robert Reminick 27-June-80 and SignOn db cr,lf,'CP/M 2.2, BIOS ver 3.d Ithaca InterSystems, Inc.',80h So, XBIOS.SRC is likely the source for the STARTUP.COM. ----------------------------------------------------- a file I obtained, which is a copy of a paper document I have, titled Adding Intersystems BIOS to CPM 2.2_3d.pdf describes in 5 pages some of the files on the Kipp disk, and how to take a CP/M 2.2 distribution disk and add Ithaca's BIOS and boot to make a bootable disk.