B-DOS
Download
Release Year
Copyrights
Copyright Provenance
Author
Description
B-DOS is an improved SamDOS. B-DOS was originally written to use with a hard disk (using the ATOM internal hard disk interface) but has been forked to support the ATOM-Lite and the Trinity Ethernet Interface.
B-DOS can also be used without a hard disk but it only works with one disk drive.
B-DOS features:
- Faster verify (as fast as loading).
- VERIFY AT sector command
- Faster FORMAT (Formatting a disk takes about 66 seconds).
- Disks can be named with a 16 character name (file names remain at 10 characters).
- Date stamping ( SAMBUS, Dallas clock and SAM Clock clock).
Versions and Compatibility
| 1.4e | 1.5a | AL 1.5a | 1.5t | 1.6 - 1.7 | |
|---|---|---|---|---|---|
| ATOM | ✓ | ✓ | ✓ | ||
| ATOM-lite | ✓ | ||||
| Trinity | ✓ (Beta 1-6) |
Edwin developed B-DOS for ATOM up to version 1.5a then Martijn Groen took over the development up to version 1.7q, adding boot utilities, CDROM/ATAPI support and B-DOS enhanced applications.
B-DOS AL 1.5a is a fork of version 1.5a by Edwin Blink to support the ATOM-lite CF interface.
B-DOS 1.5t is a fork of version 1.5a developed for SD card support on the Trinity Ethernet Interface by Colin Piggot. Further enhancements were made in later beta releases to support MMC and SD cards to increase the size of handled cards to 64 GB by Chris Pile.
Hard Disc Support
B-DOS works with ATOM IDE hard disk interface and supports hard disks up to 8 GB. To make using a hard disk as user friendly as possible, the hard disk works like a virtual second disk drive.
The storage capacity of a hard disk is divided into 800 KB blocks. Such a 800 KB block is called a record and has the same format as a floppy disk, 2 sides with 80 tracks and 10 sectors per track.
Later B-DOS versions support IDE/ATAPI CD-ROMS on the ATOM.
ATOM-lite devices support only CF-cards due to the 8-bit bus.
Hard Disc Booting
The SAM Coupé can be booted by using a modified ROM3.0:
- from the ATOM using the HD Boot ROM;
- from Trinity Ethernet Interface using the Trinity Boot ROM;
- from Atom-lite using the ATOM-lite Boot ROM.
- from any Atom interface using ROM v4.0
Note that you will need to use the 'MakeBoot' utility to write a boot sector as part of the first RECORD so make sure you unprotect the record before you try or you will be unable to save it.
Instructions
Instructions were included on disk for versions up to 1.5a as below.
An expanded manual in PDF format by Wolfgang Haller is attached to the entry for B-DOS 1.7n.
===============================================================
B-DOS Version 1.5a Information 1997/1998 by Edwin Blink.
Last updated : 11/11/1998
The contents of this file is ment for the above B-DOS version.
Contents may be different from previous B-DOS info versions.
The B-DOS code and B-DOS information are FREEWARE. This is a
fully functional DOS and there are no silly restrictions whatso
ever. Please pas it on to other SAM users.
Enjoy B-DOS.
Edwin Blink.
=B-DOS History ================================================
Version 1.5a
============
B-DOS info screen can be deactivated.
When B-DOS is booted.All system vectors are resetted to their
default values,ESC key enabled NMI enabled,ROM font restored
and mode 4 screen selected.
Implementation of decimal point command.
On DIRs the device from which the directory is made from is
printed at the top left.(Floppy,Master or Slave Dir.)
Copy command ignores also protected or hidden MDOS DIR
filetypes
Version 1.4e
============
Directory head prints 'Record x,recordname' instead of
'Drive x,record x,recordname'. So it all fits in 32 characters.
RESTORE DEVICE now uses a soft harddisk reset instead of a hard-
ware reset.
Version 1.4d
============
hookcodes HSVBK,HVEBK,HLDBK,SBYT,LBYTE and HCFSM work correctly
Version 1.4C
============
Rewrote SAMBUS Read clock routine using a SAMBUS (thanx Malcolm)
and data sheets. Uses double read technique without holding the
clock.
Version 1.4B
============
RECORD 0 is possible without a harddisk connected.
The "READ RECORD LIST" example in this info text will read the
record list correct if current RECORD is > 1.
Version 1.4A
============
Faster end of dir detection for COPY/HIDE/PROTECT/ERASE commands
RENAME bug removed. Caused the Invalid record or file not found
error in some cases (directly after BOOT) when renaming a file
on hard disk.
Wildcard bug removed. A wildcard like "*.?" only 'saw' a file
matching that wildcard if the file length is less than 256
sectors. (ie DIR 1,"*.?" would not print a file like
"BUG.S" if its length is longer than 255 sectors).
This bug was imported from SAMDOS (also resident in masterdos)
Version 1.4
===========
Reports 'No such drive' error if a hard disk speciffic command
is executed and no hard disk is available.
Allowes the use of RECORD 0 to use floppy disk
New hookcode HRECORD to select a record from Machine code.
Command LOAD n selects the current device to prevent incorrect
loading. Previously it LOADed from the last drive used and if
it was used directly after BOOT the SAM migth crash. This was
A imported SAMDOS bug.
Check disk timeout after 1.2 Seconds.
Hookcodes HRSAD and HWSAD work correctly.(didn't work version
1.3)
BOOT bug fixed.(Version 1.3: Loaded a different sector if a
sector error occured during BOOTing).
Version 1.3 (Date 16/03/98)
===========================
Floppy disk format improved verify and error reporting if a
bad sector is detected.
SNAPSHOT save options work correctly.
MasterDos directory type ignored by copy command.
Version 1.3
=============
New auto hard disk detection. (the 5TH one !!!)
Auto SAMBUS / DALLAS clock detection
Auto date stamping.
Current date and time printed at the start of a directory.
** Introduction ***********************************************
B-DOS Is an improved SAMDOS. B-DOS was mainly written to use
with a hard disk (using the internal hard disk interface).
However B-DOS can also be used without a hard disk but it only
works with one diskdrive.
a few B-DOS features:
- Faster verify (as fast as loading).
- VERIFY AT sector command
- Faster FORMAT (Formating a disk takes about 66 seconds).
- Disks can be named with a 16 character name (file names not).
- Date stamping.
HARD DISK
=========
To make using a hard disk as user friendly as possible. The
hard disk works like a virtual second disk drive. The storage
capacity of a hard disk is deviced into 800K blocks. Such a 800K
block is called a record and has the same format as a floppy
disk. (10 sectors per track, 80 tracks and 2 sides).
A record can be selected by number or by name.
= BOOTING =====================================================
When B-DOS is booted, the B-DOS logo is displayed and B-DOS
Checks if a SAMBUS clock or a DALLAS clock is connected to the
SAM. If so B-DOS will be set to use the clock for date stamping
and date and time will be displayed at the top of each
directory.
After the clock test B-DOS will do a hard disk test. If a hard
disk is detected. The hard disk specifications and the total
number of available records is displayed.
The DOS variables are automatically set to use the hard disk.
So no manual settings are required.
If a harddisk is connected but is not reconized. Try press 'R'
when the B-DOS logo is still on the screen otherwise enter:
BOOT 1 or CALL DVAR 35.
DATE STAMPING
=============
B-DOS supports date stamping files. If a SAMBUS clock or a
DALLAS clock is connected. If no clock is connected the date
and time can be poked manually in DVARS 39 to 43 to to date
stamp a file.
The day,month year,hour and minute are saved with a file.
Date and time are displayed in a directory if the screen mode
3 is active and bit 0 of DVAR 38 is set to 1.
Using date and time can be done by peeking at DVARS 39 to
DVARS 44. The clock is read and the DVARS are updated whenever
DVAR 39 is addressed.
EXAMPLE:
10 PRINT AT 0,0; PEEK DVAR 39;"/";PEEK DVAR 40;"/";1900+PEEK
DVAR 41;" ";PEEK DVAR 42;":";PEEK DVAR 43;":";PEEK DVAR 44;" "
20 IF INKEY$="" THEN GOTO 10
This small program will print the date and time at the top left
of the screen and is printed again until a key is pressed.
= BDOS BASIC COMMANDS =========================================
Note. All between brackets is optional and should be entered
Without the brackets.
Example: DIR 1 (!) Enter: DIR 1 or: DIR 1!
Decimal point loads and runs a special code file from the
.filename command record (DVAR 32) without changing
current device and record. The file is
loaded to the current activated screen and
executed. During loading the screen is
disabled. The file name should be entered
without quotes. Because of this spaces
within the filename are ignored.
(t e s t file=testfile)
- Hard disk power management (motor control) ------------------
DEVICE ON Puts the hard disk in idle mode (Motor on).
DEVICE ON,n As above and sets the APD counter (Auto
Power Down). The hard disk enters stand-by
mode when the time set by the APD counter
has elapsed.
n=0 disable APD counter
n=12/240 APD active after n * 5 seconds.
Note. The APD commands may work different
or not work at all with some hard disks.
DEVICE OFF Puts the hard disk in stand-by mode
(Motor off) Idle mode is entered as
soon as a new command is issued.
DEVICE OFF,n As above and sets the APD counter.
DEVICE STOP Puts hard disk in sleep mode (motor
off and hard disk is no longer access-
able. Also DEVICE D2 is set to 'not
available' and the DEVICE is set to D1
Use DEVICE ON to re-activate.
RESTORE DEVICE Resets hard disk logic and selects DEVICE D2
- RECORDs -----------------------------------------------------
A record must be selected before it can be used. A record can
be selected by:
RECORD n Selects record number 'n' as permanent record
RECORD "name" Selects record named "name" as permanet record
RECORD 0 Selects Floppy. (Same as DEVICE D1)
Before a record is selected and DEVICE D2 is set a test is
made if that record is available to B-DOS. (Records can be
reserved for other uses). The 'Invalid record' report will
be given if a record is not available to B-DOS.(See FORMAT
for more info)
RECORD can be used in combination with other commands. In such
a case a record is only selected to be used by that command and
can be in three forms: RECORD, RECORD n or RECORD "name".
If RECORD 0 is used the floppy disk is used instead of the hard
disk (Same as "D1:*").
To make things easier The RECORD keyword can be entered at once
by pressing SYMBOL Z.
Records and disks can also be named with a name up to 16
characters (See RENAME).
The following command. Can be used to list all records with a
name:
RECORD Will list all named records with their record
number. Record names which start with a CHR$ 0
(no name) will not be displayed.
RECORD (#s) Same as above but output to stream s
RECORD (3s),"*" Same as above but using wildcarts
- Directory ---------------------------------------------------
DIR DIR only or DIR added with '!' at the
DIR drive (!) end will perform a short directory
DIR RECORD (!) (filenames printed only). In all other
DIR drive,"*" (!) cases a detailed directory will be
DIR RECORD ,"*" (!) displayed.
DIR #stream,drive (!)
DIR #stream,RECORD (!)
DIR #stream,drive,"*" (!)
DIR #stream,RECORD,"*" (!)
RECORD may be: 'RECORD'only, 'RECORD n' or 'RECORD "name"'
The file number of a file is printed in inverse if that file
is protected.
In screen mode 3 the execute address of a CODE file is also
printerd (third number)
If BIT 0 of DVAR 38 and screen mode 3 Date and time will be
printed if the file has a valid date.
- Erasing files -----------------------------------------------
ERASE "filename" (?) Erases normal file
ERASE OVER "filename" (?) Erases a protected file
(?) will activate 'Erase "" (Y/N/C/E) ?' request for each file
to copy press Y to copy the file, N to skip the file,C to cont-
inue copying without the request, E to end the command. Any
other key will be seen as 'N'
- Protecting files/records ------------------------------------
PROTECT "filename" Protects a file
PROTECT OFF "filename" Unprotects a file
PROTECT RECORD \n\"name" Software write protect to protect
a complete record against any
write operation (FORMAT too)
PROTECT OFF RECORD \n\"name" Removes record write protect
- Hiding files ------------------------------------------------
HIDE "filename" "filename" will not be displayed in a DIR.
HIDE OFF "filename" To undo a HIDE
LOAD n LOAD a file by number. As given in a detail-
ed DIR.
- Sector commands ---------------------------------------------
READ AT d,t,s,a,n Reads 'n' sectors from drive 'd' starting
at track 't',sector 's' to ram at 'a'
Note 'n' must be in the range of 16384 to 540671. All sector
formats (128/256/512 or 1024) can be read. However multiple
sectors will only work correctly with standard disk format.
(10 sectors per track numbered 1 to 10).
WRITE AT d,t,s,a,n Writes sectors to disk. See READ AT also.
VERIFY AT d,t,s,a,n Checks if contents of sectors is the same
as in ram. See READ AT also.
- Renaming files/records --------------------------------------
RENAME "oldname" to "newname" Renames "oldname" to "newname"
Note. The new name can be the
same as the old name to allow
Case changes.
RENAME TO "Label" Renames a disk/record to
"Label"
RENAME RECORD TO "label" Renames record to "Label"
(RECORD can be: RECORD, RECORD n or RECORD "name")
Use CHR$ 0 as "label" to remove a disk/record name
Note. There is no check if records have the same name.
- FORMATTING DISKS/RECORDS ------------------------------------
FORMAT (OVER) (RECORD) ("name")
OVER Formats immediately without request message
RECORD may be: RECORD Formats last selected record
RECORD n Formats record number n
RECORD "name" Formats record named "name"
"name" names disk/record with name "name". If 1st chr of name
is a CHR$ 0 or no name is given, the disk/record will
not be named.
Important !!!!
--------------
A device specifier ("D1:*") is not allowed inside the name.
the name. Use RECORD 0 for "D1:" and RECORD for "D2:"
Before a disk is formatted a check is made if the disk has
been formatted before and if so 'FORMAT "" (Y/N)' is displayed
B-DOS formats both sides at the same track at once (SAMDOS/
MASTERDOS formats all tracks on side first and then side two).
Which makes a format faster. According to my real time clock
it took 65 seconds to format/verify a floppy disk.
Note.1 Hard disks are hard sectored and can not be formatted.
B-DOS will fill all 1600 sectors in a record with zeros
instead.
Note.2 B-DOS sets an BDOS ID in the first directory entry.
Before a record is selected a check is made for this ID.
If the ID is not there. The record is not selected.
This allows records to be reserved for non B-DOS use.
To select a record without a ID you can DPOKE the record number
directly in DVAR 25. and do a POKE DVAR 27,0: to disable a
posible software write protect from the last selected record.
To set the ID in that record you can enter FORMAT OVER or
RENAME TO CHR$ 0 (or any other name you like).
- COPYING FILES -----------------------------------------------
COPY (OVER) source TO target (?)
(OVER) Will inhibit the 'OVERWRITE "" (Y/N)' request if a file
on the target disk/record has the same name as the file to copy
(?) will activate 'COPY "" (Y/N/C/E) ?' request for each file
to copy press Y to copy the file, N to skip the file,C to cont-
inue copying without the request, E to end the command. Any
other key will be seen as 'N'
source and target may be any of the following:
"*" ;All files using the current device.
"d1:*" ;All files using drive 1
"d2:*" ;All files using current hard disk record
RECORD ;As above
RECORD,"*" ;As above
RECORD 1 ;As above but using record 1
RECORD 1,"*" ;As above
RECORD "name" ;As above but using record named "name"
RECORD "name","*" ;As above
"*" May be replaced with a string to copy selected files.
- ZX FILES and SNAPSHOTS --------------------------------------
B-DOS prevents ZX files to be in the first directory entry
(the one starting with number one in a detailed directory).
The first directory entry holds part of the disk/record name
at the same place as ZX file info.(As with masterdos. However
masterdos allowes ZX files to be in the first directory entry).
a ZX file with corrupted file info will be corrected by B-DOS
when copied.
SNAPSHOTS
loading 48K SNAPSHOTS works as with SAMDOS/MASTERDOS. Before
loading them the emulator files 'skelt.bin' and 'snapt.bin'must
be loaded in memory before loading a snapshot. Use LOAD n to
load a SNAPSHOT.
When the break button is pressed while A SNAPSHOT is running.
The border will change and waits for one of the following keys
to be pressed:
'2' return to SNAPSHOT
'3' Save screen to Floppy (or to hard disk if'SHIFT' pressed)
'4' Save SNAPSHOT to Floppy(or to hard disk if 'SHIFT' pressed)
'X' Return to SAM basic
CALL MODE 1 in basic to return to the SNAPSHOT again.
= ERROR CODES =================================================
Some BDOS error reports are sligthly different from those used
by SAMDOS and MasterDOS. The number between brackets is the
report number used by SAMDOS and MasterDOS.
1 Out of memory. There are no pages available
for the COPY command to use
as a copy buffer.
18 (89) Invalid file name The file name or record name
was a null string or too long
20 (91) Invalid device. A unknown device is selected.
21 (90) Invalid stream number the stream number was not in
the range of 0 to 15.
29 Not understood. General syntax error.
30 Integer out of range. The RAM address of a READ /
WRITE or VERIFY AT command.
was smaller than 16384.
55 (87) Missing Disk. There is no disk inserted in
the floppy disk drive.
81 Invalid record. The record selected does not
Exist or is no BDOS format.
82 Record not found Record could not be selected
by name. Because the name is
not in use.
83 Trk .. Sct .. not found The sector .. at track ..
does not exist (any longer).
84 ESC requested ESC key was pressed during a
disk operation.
85 Trk .. Sct .. error Sector .. at track .. could
not be read.
86 Trk .. Sct .. lost Sector .. at track .. is
damaged.
93 Verify failed File contents is not the same
as in memory.
94 Wrong file type The file could not be handled
by the command.
101 No AUTO file There is no AUTO file on the
disk.
103 No such drive. The drive selected does not
exist.
104 Disk is proteced. Floppy disk or record is
write protected.
105 Not enoug space on disk There is not enough disk
space left to store the file.
106 Directory full The 80 directory slots are all
being used.
107 File not found. The file doesn't exist.
108 End of file File is corrupted or track
0 sector 0 was selected.
109 File name used File name already exists.
= DVARS (DOS VARIABLES) =======================================
DVARS 0,1,2,5 and 7 are compatible with SAMDOS and masterdos.
All other DVARS are B-DOS speciffic.
0 1 Border mask 0=no border change,1-7 border changed
1 1 Drive 1 data (normaly 208 for 2*80 tracks)
2 1 Drive 2 data (208 if hard disk connected may be less
if last record is selected)
3 1 Default device chr. Set when BDOS has been booted
4 1 Default device no. Set when BDOS has been booted
5 1 Space replacement character (DIR).
6 1 Drive data last record available.
7 1 Version number devided by 10 minus 10 (version 1.1 = 1)
8 1 Hard disk base sector of current record
9 1 Hard disk number of sectors per track + 1
10 1 Hard disk base head of current record
11 1 Hard disk number of heads
12 2 Hard disk base cylinder of current record
14 2 Hard disk number of cylinders
16 2 Hard disk heads * sectors
18 2 Total number of sectors on hard disk MOD 65536
20 1 Total number of sectors on hard disk / 65536
21 2 Number of reserved sectors on hard disk for BOOT sector
and RECORD list. Equal to INT ((records+63)/32))
May be altered to access the Record names list. This DVAR
must be restored to its old value before the hard disk is
used again.
23 2 Total number of records available
25 2 current record selected. May be DPOKEd manually to select
a record. The write protect status of a record is not
updated if this DVAR is DPOKEd.
27 1 Write protect status of current record. Note only updated
If a record is selected using the RECORD command.
28 2 Temporarely record number
30 2 Alternative record number
32 2 Record number used by decimal point command
34 1 Hard disk select (&A0 Master/&B0 slave)
35 3 Call this dvar to re initialize Master/slave hard disk.
RECORD 1:POKE DVAR 34,&B0: CALL DVAR 35 to use slave
hard disk.
38 1 Date flag bit 0 = 1 Prints dates on a detailed directory
in screen mode 3
bit 7 when set disables B-DOS info screen.
39 1 Day DVARS 39/43 are used to date stamp a file if day
40 1 Month <> 0. All values are decimal.
41 1 Year (2000=100)
42 1 Hour
43 1 Minutes
44 1 Seconds
Note: When DVAR 39 (Day) is addressed from basic or hook code
HVAR the clock is read and DVARS 39 to 44 are updated.
To make access the DVARS from machine code a bit easier, the
address of DVAR 0 is stored at the first 2 bytes in the DOS
page. This address points to location C in memory (&8000-&BFFF)
example: LD a,(&5BC2)
OUT (&FB),A
LD HL,(&8000)
LD BC,7 ;DVAR 7
ADD HL,BC
LD A,(HL) ;A=B-DOS version number
= HOOK CODES ==================================================
B-DOS offers several hook codes including the SAMDOS hookcodes
All other codes which are not included in this list. Are
ignored by B-DOS (Just a RETurn from DOS).
The hook codes followed with a 'B' are B-DOS speciffic. A 'M'
indicates compatibility with Masterdos. All other hookcodes are
compatible with both SAMDOS and Masterdos.
128 &80 INIT Same as HAUTO
129 &81 HGTHD Get file header.IX points to a tape like
header (file name at IX+1 to IX+14).
file name may include "D1:" or "D2:"
The loaded header can be found at &4B50 in
the system page.
130 &82 HLOAD Load data from from file which is selected
with HGTHD.
Destination page paged at location C
Destination offset (32768 - 49151)
C =length in 16K pages (0 - 31)
DE =Modulo length (0 - 16383)
131 &83 HVERY Verify data from from file which is
selected with HGTHD.
Destination page paged at location C
Destination offset (32768 - 49151)
C =length in 16K pages (0 - 31)
DE =Modulo length (0 - 16383)
132 &84 HSAVE Save file. IX should point to a 48 bytes
header containing type, name and file
specific information.
134 &86 B HVMSAD Verify multiple sectors
A = drive number
D = track, E=sector
C = memory page
HL = memory offset (32768 to 49151)
IX = number of sectors
Multiple sectors only works with 512 bytes
sectors.
135 &87 B HDINIT Re-initialize B-DOS,prints BDOS logo
re-inits clock,hard disk and DVARS.
136 &88 HAUTO Loads "AUTO*" file. The "AUTO*" file
can be BASIC or CODE type
139 &8B HVAR Expects the DVAR number on the calculator
stack. Restacks the basic address of the
required DVAR.
If dvar 39 is addressed the clock DVARS
are updated.
B-DOS also puts the DVAR offset in the
1st two bytes of the DOS page.(See DVARS)
147 &43 HOFLE Open a new file. IX points to a 48 byte
header and 9 header bytes are saved to the
file. Before using this hook poke &5BB9
with 0 to overite existing file.
148 &44 HSBYT Save Byte in the A register to the file
opened with HOFLE.
149 &45 HWSAD Write a single sector.
A=drive number
D = track, E=sector
HL =memory address (16384 to 65024)
150 &46 HSVBK Save a Block to file opened with HOFLE.
saves A pages and DE bytes from page
selected in location C starting at HL.
Hl points also to location C in memory.
Note that this hookcode must be used only
in location B (&4000 to &7FFF).
152 &48 HCFSM Close file sector map. Closes the file
opened with HOFLE and the file is made
in the directory.
154 &9A Reserved ...
155 &9B Reserved ...
156 &9C B HRECORD Select a record. If A = 0 then select
record number HL. Else select record by.
name. HL points to the 16 char. name.
157 &9D B HVEBK Verifies a block. See HSVBK for more
details.
158 &9E HGFLE Get file ...
159 &9F B HLBYT Load byte in D register from file.
160 &A0 HRSAD Read sector
A=drive number
D = track, E=sector
HL =memory address (16384 to 65024)
161 &A1 HLDBK Load a block from file. See HSVBK for
more details.
162 &A2 M HMRSAD Read Multiple sectors
A = drive number
D = track, E=sector
C = memory page
HL = memory offset (32768 to 49151)
IX = number of sectors
Multiple sectors only works with 512 bytes
sectors.
163 &A3 M HMWSAD Write multiple sectors
A = drive number
D = track, E=sector
C = memory page
HL = memory offset (32768 to 49151)
IX = number of sectors
Multiple sectors only works with 512 bytes
sectors.
164 &A4 HREST Restores last used drive head to track 0
ignored by hard disk
165 &A5 HDIR Clears the screen and outputs a directory
to screen.
A register: =2 short dir,= 4 detailed dir
166 &A6 HERAZ Erase file which name is at IX+1 to IX+10
= COMPATIBILITY NOTES =========================================
Programms which POKE or CALL directly into SAMDOS will not
work correctly with B-DOS and B-DOS can not be joined with
Masterbasic.
= Some Tips ===================================================
To detect if B-DOS is in memory:
--------------------------------
IF PEEK DVAR 7<20 THEN PRINT "B-DOS BOOTed"
Test if a hard disk present
===========================
IF DPEEK DVAR 23 THEN PRINT "Hard disk present"
Test if a hard disk is in sleep mode
------------------------------------
IF NOT PEEK DVAR 2 AND DPEEK DVAR 23 THEN PRINT "Zzz Zzz"
To format a non B-DOS record to B-DOS format.
---------------------------------------------
10 DPOKE DVAR 25,record number
20 FORMAT OVER
record number =min. 1, max. DPEEK DVAR 23
To Quick format a (non format) record (Clears directory only)
------------------------------------------------------------
10 MODE 4: CLS # : LET SCR=((IN 252 BAND 31)+1)*16384
20 DPOKE DVAR 25,record number
30 WRITE AT 2,0,1,scr,40
40 RENAME TO name$
record number = min. 1, max. DPEEK DVAR 23
name$=CHR$ 0 for no name or anything else for a name
To quick copy a full disk or RECORD
-----------------------------------
10 CLEAR 81919
20 RECORD source
30 READ AT PEEK SVAR 7,0,1,81920,800
40 RECORD target
50 WRITE AT PEEK SVAR 7,0,1,81920,800
60 VERIFY AT PEEK SVAR 7,0,1,81920,800
70 RENAME TO name$
80 RECORD source
90 READ AT PEEK SVAR 7,128,1,81920,800
100 RECORD target
110 WRITE AT PEEK SVAR 7,128,1,81920,800
120 VERIFY AT PEEK SVAR 7,128,1,81920,800
source,target= 0 for floppy any other for a hard disk record
name$ = CHR$ 0 for no name,anything else for a name
Get record number from record name
----------------------------------
10 RECORD name$
20 LET number = DPEEK DVAR 25
To read the Record LIST
-----------------------
10 LET BASE=DPEEK DVAR 21
20 LET OLD_RCD=DPEEK DVAR 25
30 ON ERROR GOTO 70
40 DPOKE DVAR 21,0
50 DPOKE DVAR 25,1
60 READ AT 2,0,2,81920,BASE-1
70 DPOKE DVAR 25,OLD_RCD
80 DPOKE DVAR 21,BASE
90 ON ERROR STOP
The first 16 bytes at 81920 is the name of record 1,the next 16
bytes of record 2, Etc. Etc.
A CHR$ 0 as a first character indicates the record has no name.
To read the BOOT SECTOR
-----------------------
10 LET BASE=DPEEK DVAR 21
20 LET OLD_RCD=DPEEK DVAR 25
30 ON ERROR GOTO 70
40 DPOKE DVAR 21,0
50 DPOKE DVAR 25,1
60 READ AT 2,0,1,81920
70 DPOKE DVAR 25,OLD_RCD
80 DPOKE DVAR 21,BASE
90 ON ERROR STOP
Note !!!
Make sure that DVAR 21 is restored to its old value before
using the hard disk again. Otherwise reading or writing to the
hard disk will be incorrect.
===============================================================