Date : Thu, 05 Apr 1984 2158:00
From : Dave Mitton <mitton%elrond.DEC%decwrl.ARPA@csnet-relay.ARPA>
Subject: Rainbow 100-A SETHARD program
For the person with the Rainbow 100 winnie upgrade:
The following is the program that pokes magic locations in the
Rainbow BIOS to fool the system into thinking it booted off the winchester.
- Get this source on your Rainbow, and edit to taste
(I acutally set both boot and default to E:)
- Assemble and link
- copy all files you want onto the winchester
- make a copy of your bootable floppy system disk
- delete every thing except SETHARD.CMD, CPM.SYS, and Z80CNF.SYS
- boot the system off your new disk
- run SETHARD and it will think that E: is the boot disk
- you do even better by patching SETHARD into the initial command buffer
for execution at startup time.
Disclaimer: I use this program, but I am not responsible for it's coding
or functions. It is based on carnal knowledge of the Rainbow CP/M BIOS
and may break in future releases.
Enjoy, Dave Mitton, DEC Networks and Communications
TITLE 'SETHARD' ; RESET THE SYSTEM DISK
;+
; SETHARD - Sets the CP/M bootdrive disk unit to E: and the current
; default logged in drive to F:
; Used on Rainbow 100-A's which cannot boot the Winchester directly.
;
; Based on module by: Juergen Stieger PCSC - ZURICH
; Re-coded by: David J. Mitton, Networks and Communications - TWO/E07
;
; V1.0 28-Feb-84 CP/M-86/80 V2.0
;
;-
CSEG ; code segment
DRIVEA EQU 0 ; Drive A unit number
DRIVEB EQU 1 ; Drive B unit number
DRIVEE EQU 4 ; Drive E unit number
DRIVEF EQU 5 ; Drive F unit number
; *** Modify the following three symbols for your configuration
CURRENT EQU DRIVEF ; Current disk desired
BOOT EQU DRIVEE ; Boot disk desired
SYSTEM EQU DRIVEE ; System disk desired
; *** NOTE: the following 3 locations are DEC CP/M-86/80 V2.0 dependent ****
CDISK EQU 0939H ; Current drive unit number
CURDRSV EQU 24B7H ; Boot drive unit number
SDISK EQU 254AH ; Default system drive unit number
ORG 100H ; Org to proper start
START: MOV AX,40H ;SET ES TO CP/M-CSEG
MOV ES,AX ; ...
MOV AL,CURRENT ;Put drive unit number in AL
MOV DI,CDISK ;Put addr of CURRENT DRIVE cell in DI
STOSB ;Write unit number into BIOS
MOV AL,BOOT ;Put drive unit number in AL
MOV DI,CURDRSV ;Put addr of BOOT DRIVE cell in DI
STOSB ;Write unit number into BIOS
MOV AL,SYSTEM ;Put drive unit number in AL
MOV DI,SDISK ;Put addr of SYSTEM DRIVE cell in DI
STOSB ;Write unit number into BIOS
MOV CL,0 ;Exit back to system and simulate ^C
MOV DL,CL ;
INT 224 ;via interrupt