; 2 June 1989 .Z80 TITLE BIOSPLUS.MAC SUBTTL New BIOS CP/M compatible for DOS+ ;-------------------------------------- jp boot jp _wboot jp const jp _conin jp _conout jp list jp punch jp reader jp home jp seldsk jp settrk jp setsec jp setdma jp _read jp write jp listst jp sectran ;-------------------------------------- boot: ld sp,tpa ld hl,0000 ld (hstact),hl inbios: xor a ld (4),a ld hl,cprloc .01inbios: push hl ld a,(4) and 4 cp 4 jr c,.02inbios xor a ld (4),a .02inbios: ld hl,dph0 ld (dpbptr),hl ld hl,zdma ld (hstdma),hl ld hl,0 ld (brkvct),hl ld (hstwrt),hl ld a,(4) ld c,a ret ;-------------------------------------- _wboot: ld sp,tpa ld hl,$loadr ld de,$bdos ld bc,0 ld a,0 mcall rdblok ld hl,cprloc+3 jp .01inbios ;-------------------------------------- const: ld a,(pcflgs) ;test 40/80 col. bit 1,a jr nz,.01const ;si 40 col. alors saut ;sinon 80 col. ld a,0ah out (rg6845),a ld a,(pcflgs) ;test cursor on/off rrca ld b,01000000b ;cursor off jr nc,.02const ;cursor on ld b,01100000b .02const: ld a,b out (dt6845),a .01const: mcall zrscan mcall zscurs or a ret z ld a,0ffh ret ;-------------------------------------- _conin: mcall zkeyin ld e,a in a,(auxreg) ;test if not ctrl key rla rla ld a,e jr nc,kbret ;jr if ctrl key cp 19h ;Einstein DEL key ld b,7fh ;changes to standard CP/M DEL jr nz,kbret ld a,b kbret: ret ;-------------------------------------- _conout: ld a,c mcall zoutc ret ;-------------------------------------- list: ld a,c mcall zpout ret ;-------------------------------------- punch: ld a,c mcall zslout ret ;-------------------------------------- reader: mcall zsrlin ret ;-------------------------------------- home: ld c,0 mcall zsttrk mcall zstsec ret ;-------------------------------------- seldsk: mcall zsldsk ret ;-------------------------------------- settrk: mcall zsttrk ret ;-------------------------------------- setsec: mcall zstsec ret ;-------------------------------------- setdma: mcall zstdma ret ;-------------------------------------- _read: mcall zread ret ;-------------------------------------- write: mcall zwrite ret ;-------------------------------------- listst: xor a nop ret ;-------------------------------------- sectran: ld h,b ld l,c ret ;-------------------------------------- dph0:: dw 0 dw 0 dw 0 dw 0 dw zdirbuf dw dpb0 dw csv0 dw alv0 dph1:: dw 0 dw 0 dw 0 dw 0 dw zdirbuf dw dpb1 dw csv1 dw alv1 dph2:: dw 0 dw 0 dw 0 dw 0 dw zdirbuf dw dpb2 dw csv2 dw alv2 dph3:: dw 0 dw 0 dw 0 dw 0 dw zdirbuf ds 2 ds 2 ds 2 dpb0:: dw spt0 db bsh0 db blm0 db exm0 dw dsm0 dw drm0 db al00 db al01 dw cks0 dw off0 dpb1:: dw spt1 db bsh1 db blm1 db exm1 dw dsm1 dw drm1 db al10 db al11 dw cks1 dw off1 dpb2:: dw spt2 db bsh2 db blm2 db exm2 dw dsm2 dw drm2 db al20 db al21 dw cks2 dw off2 ;dpb3:: ; dw spt3 ; db bsh3 ; db blm3 ; db exm3 ; dw dsm3 ; dw drm3 ; db al30 ; db al31 ; dw cks3 ; dw off3 ;-------------------------------------- csv0: ds cks0 alv0: ds (dsm0/8)+1 csv1: ds cks1 alv1: ds (dsm1/8)+1 csv2: ds cks2 alv2: ds (dsm2/8)+1 ;csv3: ds cks3 ;alv3: ds (dsm3/8)+1 ;--------------------------------------