; EXECST.ASM for the Osborne Executive George Peace - 2/85 ; This program should be placed on the "A" drive in user zero if the ; expanded CP/M Plus CCP (CCP+) is on the boot diskette. ; This program (or at least the code presented) must be executed prior to ; the first execution of the CCP on the first warm boot. Osborne - in its ; usual short-sighted wisdom - forgot to count the number of sectors ; available on the boot disk for the CCP.COM file. There are 4 physical ; sectors of 1024 bytes available (32 sectors) on the disk. The cold boot ; code loads all 32 to bank 0, address 0. The warm boot transfers only the ; first 25 from bank zero to bank 1. This never appeared as a problem ; until someone decided to expand the CCP beyond 25 sectors (i.e. CCP+). ; This code takes advantage of the first-pass warm boot logic in the ; Executive to allow BIOS modification immediately prior to first transfer ; of the CCP to the TPA. It simply changes a 0Ch to 0Fh to allow a greater ; number of bytes to be transferred from bank 0 to bank 1. ; ORG 100H START: LHLD 1 ;get warm boot vector address INX H ;move up to routine start address MOV A,M ;get low order byte of address ADI 41H ;add offset into WBOOT routine MOV E,A ;save low order byte INX H ;increment to high order byte MOV D,M ;save high order byte XCHG ;move the computed address to from DE to HL MOV A,M ;get the high order byte of the CCPLEN value CPI 0CH ;is it 0Ch? JNZ 0 ;nope - take no chances MVI A,0FH ;yup - load up register A with 0Fh MOV M,A ;and replace the byte in BIOS JP 0 ;now do a warm boot and (hopefully) load CCP END