|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 7040 (0x1b80)
Types: TextFile
Names: »DHEADER.PRN«
└─⟦ee6c93f63⟧ Bits:30009434 50004973
└─⟦e5efac989⟧
└─⟦this⟧ »DHEADER.PRN«
\f
CROMEMCO CDOS Z80 ASSEMBLER version 02.15 PAGE 0001
0001 ;*************************************************
0002 ;* DOCTOR.Z80 12/7/80 Ver 1.40 J.M. Holland *
0003 ;* Copyright (c) 1980 (Formerly HOSPITAL.Z80 ) *
0004 ;* This program requires an 8080 & CP/M and is a *
0005 ;* collection of programs that will extract *
0006 ;* data from bad disks, reconstruct damaged *
0007 ;* directories, and purge out bad sectors *
0008 ;*************************************************
0009 ;
0010 ; Converted to 8080 code 3/81 by MQH.
0011 ;
0012 ; This version includes code to work on a
n Intertec
0013 ; SuperBrain computer. S.B. CP/M differs from o
ther versions
0014 ; of CP/M in that it allows 256 sectors per ext
ent. Since
0015 ; the record count field of a FCB (FCB+15) is o
nly one byte
0016 ; long, the people at Intertec use the low orde
r bit of the
0017 ; extent number field (FCB+12) to indicate that
the extent
0018 ; actually contains 128 sectors more than the r
ecord count.
0019 ; Thus even numbered extents contain less than
129 sectors
0020 ; and odd numbered extents contain more than 12
8 sectors.
0021 ; Note that all but the last extent of a file w
ill have odd
0022 ; extent numbers. The last extent of a file may
have either a
0023 ; even or a odd extent number.
0024 ; Logic to handle this bizzare arrangement is e
nabled when the
0025 ; byte SBSW is non-zero. INSTALL.COM should set
this byte to
0026 ; true for S.B., zero for all other systems.
(0000) 0027 BOOT: EQU 0000H ;CP/M Warm boot entry
(0005) 0028 ENTRY: EQU 0005H ;CP/M entry for BDOS and BIOS
(000D) 0029 CR: EQU 0DH ;Carriage return
(000A) 0030 LF: EQU 0AH ;Linefeed
0031 ;The following are relative offsets for
0032 ;finding the primitive BDOS hooks and are
0033 ;relative to value found at BOOT+1.
(0015) 0034 HOME: EQU 21
(0018) 0035 SELDSK: EQU 24 ;C Reg=Disk number (0=A,15=P)
(001B) 0036 SETTRK: EQU 27 ;C Reg=Track number
(001E) 0037 SETSEC: EQU 30 ;C Reg=Sector number
(0021) 0038 SETDMA: EQU 33 ;BC Pair=DMA Start Address
(0024) 0039 READ: EQU 36 ;Selected sector to DMA
(0027) 0040 WRITE: EQU 39 ;Write DMA area to sector
(0040) 0041 KBUFLEN:EQU 64 ;Sets keybuff limit
(0003) 0042 TRYMAX: EQU 3 ;Attempts to read +1
0043 ;///////////////////////////////////////////
0000 0044 ORG 0100H
\f
CROMEMCO CDOS Z80 ASSEMBLER version 02.15 PAGE 0002
0100 C35513 0045 JP START ;Jump over strings and subrs
0046 ;
0047 ;///// PERSONALITY INFORMATION FOLLOWS /////
0048 ;This information must be entered for each
0049 ;system. The INSTALL.COM program writes
0050 ;these values. (The word BLOCK = GROUP).
0051 ;
0103 00 0052 SKEWTAB:DB 00 ;Bias of 1.
0104 01020B0C 0053 DB 01,02,11,12,21,22,31,32
15161F20
010C 090A1314 0054 DB 09,10,19,20,29,30,07,08
1D1E0708
0114 11121B1C 0055 DB 17,18,27,28,05,06,15,16
05060F10
011C 191A0304 0056 DB 25,26,03,04,13,14,23,24
0D0E1718
0124 (01DF) 0057 DS 479 ;Room for larger tables.
0303 8000 0058 SECTSIZ:DB 80H,00 ;Virtual Sector size in bytes.
0305 1000 0059 BLOKSIZ:DB 16,00 ;Block size in sectors.
0307 2000 0060 TRAKSIZ:DB 32,00 ;Track size in sectors.
0309 0200 0061 DIRSIZ: DB 02,00 ;Directory size in blocks.
030B 0800 0062 EXTSIZ: DB 08,00 ;Extent size in blocks.
0063 ;*Note: For single byte block
0064 ;numbering this is the number of
0065 ;bytes used in FCB group area.
0066 ;For double byte numbering it is
0067 ;the number of 2 byte words used.
030D 0200 0068 SYSSIZ: DB 02,00 ;Number of system tracks.
030F 4D00 0069 TRAKMAX:DB 77,00 ;Number of tracks + 1.
0311 E5 0070 DIRNULL:DB 0E5H ;Directory dummy character.
0312 0400 0071 CHUNK: DB 04,00 ;Transfer buffer size in blocks
0314 0100 0072 LOSECT: DB 01,00 ;Number of 1st sector on track
0316 0000 0073 DUBFLAG:DB 00,00 ;*0=single byte block entries.
0074 ;*1=double byte block entries.
0318 00 0075 SBSW: DB 0 ; Nonzero if InterTec Superbrain
0076 ;//////////////////////////////////////////
0077 ; These strings are modified by INSTALL
0319 0D0A4469 0078 DIRMSG: DB CR,LF,'Directory is in group '
72656374
6F727920
69732069
6E206772
6F757020
0331 3020616E 0079 DB '0 and 1 ';*Ten character string put
64203120
2020
033B 0D0A24 0080 DB CR,LF,'$' ; in by install
033E 0D0A5379 0081 SYSMSG: DB CR,LF,'System is on track '
7374656D
20697320
6F6E2074
7261636B
20
0353 3020616E 0082 DB '0 and 1 ';*Ten character string put
64203120
2020
035D 0D0A 0083 DB CR,LF ; in by install
\f
CROMEMCO CDOS Z80 ASSEMBLER version 02.15 PAGE 0003
035F 44697265 0084 DB 'Directory is on track '
63746F72
79206973
206F6E20
74726163
6B20
0375 32202020 0085 DB '2 ';*Ten character string put
20202020
2020
037F 0D0A24 0086 DB CR,LF,'$' ; in by install.
0087 ;
0088 ;
0089 ;//////////////////////////////////////////
0090 ;The following values are calculated
0091 ;by the program at the time of running.
0092 ;
0382 2100 0093 SECTMAX:DB 33,00 ;Highest Sector on a track + 1.
0384 0000 0094 BLOKMAX:DB 00,00 ;Highest Block on disk +1.
0386 0000 0095 BLOKBYT:DB 00,00 ;Number of bytes in a block.
0388 0000 0096 DIRTOP: DB 00,00 ;Calculated top of directory
0097 ;
«eof»