073
03.02.2013, 20:35 Uhr
Hein_Ko
|
Im Moment stehen folgende Daten im DBP ; ; 19:55 03.02.13 letzte Änderung ; 22:25 28.01.13 Version mit Laufwerk A(RAMDISK) und B(IDE0) ohne C ;
CPU Z80 ; nur mit neuem DOS-Assembler !!! FNAME "BIOS.BIN" ; Assembler BIN-Ausgabedatei
; =================================================================== ; System Equates
MSIZE: EQU 64 ; #K of RAM in system NBYTES: EQU 128 ; bytes per sector (RAMdrive) CR: EQU 0dh ; carriage return LF: EQU 0ah ; line feed
TPAORG: EQU 0100h ; 0100 TPA immer Anfang BIAS: EQU 0A000h ; 0A600h bias to start of CCP CCP: EQU 0D400h ; bias + 3400h = CCP ( = EA00h) BDOS: EQU 0DC00h ; ccp+806h ; start BDOS ORGADR: EQU 0EA00h ; ccp+1600h ; start BIOS CPML: EQU ORGADR-CCP ; size of warm load
IOB: EQU 3 ; intel i/o byte
;ROMT: EQU 4 ; hardware toggles lower 32K RAM/ROM ; bei SEPIA anders gelöst !
BUFFTAB: EQU 0FD00h ; FD00-FE00 var. Zwischenspeicher 255 Byte ablegen
; MERKE: SYS.BIN System wird auf D400-FC00h hochgeladen
SPEND: EQU 0FFFFh ; Stack Pointer Speicherende, SP zeigt nach unten
BIOSPACE: EQU 01400h ; 15A0h max. Speichergröße für Block verschieben
; =================================================================== ; ; CP/M Linkages to BIOS ;
ORG ORGADR ; BIOS-Startadresse im SRAM PHASE ORGADR ; Ab hier Source-Adressen relocated nach EA00h
cbios: jp boot ; cold boot Kaltstart, liegt jetzt auf EA00h - EA03h wboote: jp wboot ; warm boot Warmstart jp const ; console status Zeichen in - Status Bit ser. COM1 abfragen jp conin ; console input Zeichen aus Buffer holen jp conout ; console output Zeichen senden jp list ; listing output Zeichen auf Drucker jp punch ; punch output na. jp rdr ; reader input na. ; home: jp hme ; restore drive to trk00 seldsk: jp seld ; select drive settrk: jp strk ; set track setsec: jp ssec ; set sector setdma: jp sdma ; set disk transfer address rde: jp read ; read from disk wre: jp write ; write to disk jp lstst ; read LST device status jp sectran ; translate log. to phys. sector ; ; DISK PARAMETER HEADERS FOR BDOS ;
dpbase: dw 0,0 ; disk A0> (RAM disk) nur als Dummy ohne Funktion dw 0,0 dw dirbuf,rddub dw csv,alv0
hd1: dw 0,0 ; disk B0> (ZIDE drive) = MASTER0 HDD/CF dw 0,0 dw dirbuf,hd1dub dw csv,alv1
; RAMdisk --- 8 spt 256 trks. (no chksum area ... yet)
rddub: dw 32 ; sectors/trk db 4 ; block shift (BSH) db 15 ; block mask (BLM) db 0 ; extent mask (EXM) dw 511 ; disk size (#alus-1) (DSM) dw 255 ; max dir entries (#-1) (DRM) db 0f0h ; dir. alloc. (AL0) db 0 ; dir. alloc. (AL1) dw 0 ; check size (CKS) dw 0 ; track offset (OFF)
; IDE drive - c/h/s is 3148/16/63 (252 is one track) ; 4k allocation blocks, 1024 dir ent., ~32 MB
cpmspt: equ 252
hd1dub: dw cpmspt ; sectors/trk db 5 ; block shift (BSH) db 31 ; block mask (BLM) db 1 ; extent mask (EXM) dw 8184 ; disk size (#blocks-1) (DSM) dw 3ffh ; max dir entries (#-1) (DRM) db 0ffh ; dir. alloc. (AL0) db 0 ; dir. alloc. (AL1) dw 0 ; check size (CKS) dw 1 ; track offset (OFF)
; .....
ide_status: db 0 ; bit 0 = master (0) or slave (1) ; bit 1 - 0 means master not previously accessed ; bit 2 - 0 means slave not previously accessed
;...................................................... ; read/write storage ; sekdsk: ds 1 sektrk: ds 2 seksec: ds 1 ; hstdsk: ds 1 hsttrk: ds 2 hstsec: ds 2 ; sekhst: ds 1 hstact: ds 1 hstwrt: ds 1 ; unacnt: ds 1 unadsk: ds 1 unatrk: ds 2 unasec: ds 1 ; erflag: ds 1 rsflag: ds 1 readop: ds 1 wrtype: ds 1 dmaadr: ds 2 hstbuf: ds hstsiz ;
dirbuf: ds 128 ; directory scratch buffer alv0: ds 65 ; disk allocation vectors alv1: ds 1024 ; für erste HDD
;alv2: ds 1024 ; für zweite HDD
csv: ds 0 ; check vector scratch pad
Hmmm... Die DIR . : . : . : . Zeichen sind auch wieder da. Das Formatieren klappt irgendwie nicht. Grüße, Heinrich -- Es gibt keine Probleme - nur Lösungen ! Dieser Post wurde am 03.02.2013 um 20:42 Uhr von Hein_Ko editiert. |