TITLE 'CompuPro Disk Sub-system CP/M-86 BIOS.' ;CBIOS - CompuPro CP/M-86 1.0 CBIOS. ; ; +-----------------------+ ; | | ; | C B I O S | ; | | ; +-----------------------+ ; ; ; CompuPro Sorcim ; Oakland, CA Santa Clara, CA ; ; Copyright 1981, Sorcim Corporation. ; ; This product is a copyright program product of ; SORCIM and is supplied for use with the CompuPro ; Disk controllers. ; ; CPm-86 Version number: 1.0 ; Level A 80-10-27 ; B 81-02-04 ; C 81-04-17 ; D 81-04-28 ;Beta test release ; E 81-05-03 ;Fix BioSeg presumption ; F 81-07-17 ;Fix Single to double density xfer ; G 81-09-10 ;Add Interfacer 3, fix boot from 1024 ; byte sector diskette, fix I/O ; on double sided diskettes. ; H 81-10-31 ;Add list device to interfacer 3 ; Initialize stack on cold boot ; J 81-12-3 ;Fix Copysys.cmd boot without SS1 ; ; The following code is supplied to customers who ; purchase a hard/floppy disk system from CompuPro. ; The intent of the following code is to illustrate ; how to create a CBIOS for the user supplied ; CP/M-86. The following CBIOS was developed and ; tested using the following hardware components. ; ; CompuPro IEEE 696 Floppy Disk Controller. ; CompuPro IEEE 696 chassis and motherboards. ; CompuPro IEEE 696 Dual Processor board. ; CompuPro IEEE 696 RAM 20 boards (2). ; CompuPro IEEE 696 Interfacer I (assigned port 0 thru 3). ; The Act86 "O=wxyzH" parameter is interpreted as follows: ; xyz = Lower memory size in 1024s, starting at zero. ; w = 1\?, 1\LDR, 2\UMS ; LDR => Assemble for LOADER.cmd ; UMS = Upper memory size, ending at fFFFFh. ; UMS= 0 ==> no upper memory ; UMS= 1 ==> 16k at fFC00 ; UMS= 2 ==> 32k at fF800 ; UMS= 3 ==> 64k at fF000 ; Example: ; O=0040h 64k at 0, no upper, CPM.SYS ; O=4020h 32k at 0, no upper, LOADER.CMD standard ; O=3080h 128k at 0, 64k at fF000, CPM.SYS ; ; Assumes that at least 24k is available at 0 (in LOADER.CMD). ; If no RAM in upper memory, then must have PROM ; containing 8080 Restart jump: ; ORG 0FFFFh:0 ;(see Intel manual) ; JMPL 400h,0 OPARM SET *o ;capture o-parameter VERS: EQU 10 CBIOSV: EQU 10 ;CBIOS revision level (ver 1.0J) FALSE: EQU 1 = 2 TRUE: EQU not FALSE CPU '8088' ; Decipher memory lengths (in paragraph units). LOMEM = (OPARM and 0FFFh)*(1024/16) ;length of lower memory OPARM: SET OPARM shr 12 HPARM: SET OPARM and 3 IF HPARM = 3 HPARM: SET 4 endif HIMEM = HPARM * (4000h/16) ;upper mem paras SysSeg = 410h /16 @LDR = OPARM and 4 if @LDR MSG 'Assembling for LOADER.CMD' BioSeg = 4000h L$CCP = 0400h ;length of LdCpm L$DOS = 0E00h ;length of LdBdos else MSG 'Assembling for CPM.SYS' BioSeg = SysSeg L$CCP = 0B00h L$DOS = 1A00h endif HARD: EQU False ;True to enable Hard disk BANG: EQU True ;True enables BitBanger support SMORG: EQU True ;True enables System Support Board INTER3: EQU True ;True to include Interfacer 3 support space 4,20 ; Link files. LINK BIOS1.a86 ;Jump Table LINK GBCBIOS2.a86 ;CP/M disk definitions LINK GBCBIOS3.a86 ;Unit record I/O LINK BIOS4.a86 ;Non data transfer disk LINK GBCBIOS5.a86 ;Cold and Warm boot LINK GBCBIOS6.a86 ;Disk data transfer I/O LINK BIOS8.a86 ;Utility routines LINK BIOS9.a86 ;CBIOS storage cells ; Endx GBCBIOS