.z80 title bios6 (excbios6) LDRBIOS cold / warm boots ; 1983-03-20 set for 1st release ; 1983-02-23 nop support of err msgs (disk, dev not rdy) ; 1983-02-22 change name romjmp to torom ;**************************************** ;* * ;* EXECUTIVE BIOS * ;* for * ;* CP/M 3.XX * ;* by * ;* * ;* Glenn S. Tenney * ;* COMPRO * ;* P.O. Box 5260 * ;* San Mateo, CA 94402 * ;* * ;* Copyright (c) 1983 * ;* Osborne Computer Corporation * ;* * ;**************************************** ; this is a fairly stripped down bios allowing the ; std bios to be used as much as possible. This bios ; is used ONLY for cpmldr and could be a single source ; module, but uses the std bios disk drivers, jump table ; and misc routines (move etc.). Obviously, the boot ; functions are different for this ldrbios. ; This module written by Glenn S. Tenney ; include EXCBIOSE.LIB .xlist include EXCBIOSE.LIB .list public cboot,wboot public area0 ; so we can know where i/o area is extrn drvtbl ; we have to change the drive 0 dph extrn setbnk ; init the bank for disk i/o too public devtbl ; the device table public devini ; device init public conout,auxout,list ; output routines public conost,auxost,listst ; output status public conin,auxin ; input routines public conist,auxist ; input status public stdsen,stderr,stdnr ; err msg routines extrn torom ; off to rom cseg ; to be like rest of bios cboot: wboot: ; we have to dummy up the bcb's in a,(sys) ; current bank call setbnk ; this is bank for doing all disk i/o ld hl,(drvtbl) ; pt to list of drives ld de,18 add hl,de ; hl=dph0+18 ( dirbcb field ) ld bc,ldrbcb0 ; now store in addr of 1st bcb ld (hl),c inc hl ld (hl),b inc hl ; hl=dph0+ 20 ( dtabcb field ) ld bc,ldrbcb1 ; now store in addr of 2nd bcb ld (hl),c inc hl ld (hl),b ret ; these don't need to do anything page ; just a very stripped down bios ; the following are dummy error routines so that the same ; disk drivers can be used by ldrbios stdsen: stderr: stdnr: cp a ; force zero flag (=no retry) ret ; devini ; dummy serial device init devini: ret ; nothing for now ! ! ; conout, auxout and list ; output the character to console crt conout: auxout: list: ld e,cout ; rom to type a character jp torom ; output it and exit ; conost, auxost, listst ; all return aok now conost: auxost: listst: xor a ; all ready ret ; and done ; conist, auxist ; just check status conist: auxist: ld e,skey ; check keyboard jp torom ; let rom do it ; conin, auxin ; get console character conin: auxin: ld e,ci ; get character jp torom ; also let rom do it ; devtbl ; only a dummy table for cpmldr devtbl: db 'CRT ' ; device 0 crt db devin+devout,0 ; i/o device no baud db 0 ; end of table ; the following are the bcb's to be used during cpmldr ONLY ; they are dummyed up and used for a non-banked system for ; booting from drive A: ONLY! ! ! ! ! ! ! ldrbcb0: ; for dirbcb db 0ffh,0,0,0,0,0 dw 0,0 dw area0 ; i/o area db 0 dw 0 ; (link and bank for longest bcb) ldrbcb1: ; for dtabcb db 0ffh,0,0,0,0,0 dw 0,0 dw area1 ; and it's i/o area db 0 dw 0 dseg ; so areas appear last (I hope) ; ; WARNING ; ; the i/o areas are equated so as to not take up ; space on the system tracks. Therefore, this module ; must be linked LAST ! ! ! ! ! ! area0: ds 1 ; the end of the ldrbios area1 equ area0+1024 ; the 2nd i/o area end