The 1581 DOSReference Guide
The 1581 DOSReference Guide
~
^
DOS
REFERENCE
GUIDE
^
First Edition, October 1, 1988
my family
* * *
meine Familie
Introduction i
1581 Autoloader 2
Format Organization 7
Directory Track 11
Directory/File Entries 15
Read 21
Write 22
Inquire Disk 23
Format Disk 23
Inquire Status 26
Fastload Utility 28
DOS Retries 32
Verify Select 32
Memory Read/Write 34
Thanks 119
EXTENDED BLOCK-READ
PRINT#15,"B-x";channel#;track#;sector#
(x = shifted R)
or
PRINT#15/"B-";CHR$(210);channel#;track#;sector#
EXTENDED BLOCK-WRITE
PRINT#15,"B-x";channel#;track#;sector§
(x = shifted W)
or
PRINT#15,"B-";CHR$(215);channel#;track#;sector#
* * *
PRINT#15,"&0:filename"
• •
Byte x -
Notes:
* * *
PRINT#15,"/0:partition name,"+CHR$(starting
track)+CHR$(starting sector)+CHR$(low byte
of sectors)+CHR$(high byte of sectors)+",C"
_:
/0:PARTITION1 /0:PARTITION2
i
/0:PARTITION2A
i
/0:PARTITION2B
PR1NT#15,M/O:partition name"
PRINT#15,M/"
PARTITION NOTES
3,581 "SEgRCT"
Cylinders 0 thru 79
Sectors 1 thru 10 on side 0
Sectors 1 thru 10 on side 1
Sector size 512 bytes
Tracks 1 thru 80
Sectors 0 thru 39 (using physical sectors 1
to 10 sides 0 and 1)
Sector size 256 bytes
Storage:
* * *
12 bytes of $00
3 bytes of hex $A1 (data hex $A1, clock
hex $0A)
1 byte of $FE (ID address mark)
1 byte (track number)
1 byte (side number)
1 byte (sector number)
1 byte (sector length, $02 for 512 byte
sectors)
2 bytes CRC (cyclic redundancy check)
22 bytes of hex $4E
12 bytes of $00
3 bytes of hex $A1 (data hex $A1, clock
hex $0A)
1 byte of hex $FB (data address mark)
512 bytes of data
2 bytes CRC
38 bytes of hex $4E
* * *
CYLINDER # + 1 = TRACK #
TRACK # - 1 = CYLINDER #
* * *
Sector Conversion
SIDE 0 SIDE 1
PHYSICAL LOGICAL PHYSICAL LOGICAL
1 o, 1 1 20, 21
2 2, 3 2 22, 23
3 4, 5 3 24, 25
4 6, 7 4 26, 27
5 8, 9 5 28, 29
6 10, 11 6 30, 31
7 12, 13 7 32, 33
8 14, 15 8 34, 35
9 16, 17 9 36, 37
10 18, 19 10 38, 39
Byte § Description
* * *
Byte # Description
6 Input/Output byte
Byte # Description
6 Input/Output byte
* * *
Byte # Description
Byte # Description
Byte # Description
* * ♦
Sector 1
Byte # Description
Bvte i Description
Byte # Description
* * *
Byte # Description
* * *
Byte i Description
Byte I Description
3 Record length
Byte # Description
2 Value 254/$FE
* * *
LOAD "PRGNAME,DEL,R",8
or
OPEN 8,8,8,"PRGNAME,DEL,R"
BURST READ
Command format:
PRINT#15/»U0"-fCHR$(A)+CHR$(B)4.CHR$(C)+CHR$(D)
+CHR$(E);
5 NOT USED
Command format:
PRINT#15,"UO"+CHR$(A)+CHR$(B)+CHR$(C)+CHR$(D)
+CHR$(E);
5 NOT USED
1 SET TO ONE
* * *
INQUIRE DISK
Command format:
PRINT#15,"U0"+CHR$(A);
3 SET TO ZERO
2 SET TO ONE
1 SET TO ZERO
* * *
FORMAT
Command format:
PRINT#15/"U0"+CHR$(A)+CHR$(B)+CHR$(C)-»-CHR$(D)
+CHR$(E)+CHR$(F)+CHR$(G);
3 SET TO ZERO
* * *
Command format:
PRINT#15,"U0ll+CHR$(A)+CHR$(B);
6 NOT USED
3 SET TO ONE
2 SET TO ZERO
1 SET TO ONE
INQUIRE STATUS
Command format:
PRINT#15/"U0"+CHR$(A)+CHR$(B)+CHR$(C)+CHR$(D);
4 SET TO ZERO
1 SET TO ZERO
* * *
Command format:
PRINT#15,"U0"+CHR$(A)+CHR$(B);
5 NOT USED
1 SET TO ZERO
0 SET TO ONE
* * *
Command format:
PRINT#15,"U0"+CHR$(A)+FILENAME$;
0 OR 1 OK
31 EOI
0000 = OK
0001 = OK
0010 = CANNOT FIND HEADER BLOCK
0011 = NO ADDRESS MARK FOUND
0100 = DATA BLOCK NOT PRESENT
0101 = DATA CRC ERROR
0110 = DISK FORMAT ERROR
0111 = DISK VERIFY ERROR
1000 = DISK WRITE PROTECT ERROR
1001 = HEADER BLOCK CRC ERROR
1010 = DISK IS WRITE PROTECTED
1011 = DISK CHANGE OCCURRED
1100 = DISK FORMAT IS ILLOGICAL
1101 = RESERVED
1110 = SYNTAX ERROR OCCURRED
1111 = NO DISK DRIVE PRESENT
* * *
PRINT#15,"U0>Bx"
PRINT#15,"U0>Sx"
PRINT#15/"U0>Rx"
PRINT#15,"U0>T"
Verify Select:
PRINT#15,"U0>Vx"
PRINT#15,"U0>"+CHR$(x)
PRINT#15,"U0>Ix"
PRINT#15/"U0>MR"+CHR$(>MEMADDR)+CHR$(# OF PAGES)
OR
PRINT#15/'U0>MW"+CHR$(>MEMADDR)+CHR$(# OF PAGES)
Kracker-Mon
Kracker-Mon Relocator
Op-Code Editor
Computer MLM
Drive-Mon
DOS Wedge
Notes on Option 2
LOAD "MONXOOO"^,!
Notes on Option 3
Description
L "FILENAME",device#,address(optional)
S "FILENAME",device#,FFFF,LLLL+1
Example: S "FILE",08,C000,D000
saves memory from $C000-$CFFF
Examples:
H E000 FFFF 43 4F 4D 4D
Examples: \^j
7 6 5 4 3 2 1 0
I I i i
I -> TIMEOUT
I > RUNNING
> STEPPING
> ACCELERATING
$80 ACCELERATING
$0040- TO
$0041- Tl
$0043- T3
$0044- T4
$0055- RO
$0056- Rl
$0058- R3
$0059- R4
7 6 5 4 3 2 10
I I i I ill.
ATN PENDING
ATN MODE
i i i !.::: CLKIN STATUS
-> FAST LOCK(SERIAL)
-> SLOW FLAG
-> FAST FLAG(SERIAL)
-> LISTEN
-> TALK FLAG
7 6 5 4 3 2 10
I I _;
> BLINK RED LED
> ACTIVATE LED
7654 3210
j j j > rel FILE
j --> CRC CHECK
j > VERIFY CHECK
CHANNEL 0 = $00A8
CHANNEL 1 = $00A9
ETC.
$FF - INACTIVE
$81 - OPEN FOR WRITE
$41 - READ/WRITE
$01 - OPEN FOR READ
$08 - PROTECTED
7 6 5 4 3 2 10
I I
BOOT ON INITDRV
BOOT ON RESET
7 6 5 4 3 2 10
* * *
♦ * *
* * *
COMMAND VALUE
TYPE DESCRIPTION BIT 7 6 5 4 3 2 1 0
I RESTORE 0 0 0 0 H V X Y
I SEEK 0 0 0 1 H V X Y
I STEP 0 0 1 U H V X Y
I STEP IN 0 1 0 U H V X Y
I STEP OUT 0 1 1 U H V X Y
II READ SECTOR 1 0 0 M H E 0 0
BIT KEY
0 1 3 MS
1 0 6 MS
1 1 12 MS
I: DON'T CARE
J: DON'T CARE
* * *
BIT DESCRIPTION
0 BUSY FLAG
0 = NO COMMAND IS EXECUTING
1 DATA REQUEST/INDEX
2 LOST DATA/TRACK 00
RECORD TYPE/SPIN-UP
WRITE PROTECT
MOTOR ON
* * *
SETUP: None.
STEP
SETUP: None.
STEP-IN
SETUP: None.
STEP-OUT
SETUP: None.
* * *
SECTOR
WRITE SECTOR
Type III
READ ADDRESS
0 = 128 bytes
1 = 256 bytes
2 = 512 bytes
3 = 1024 bytes
SETUP: None.
WRITE TRACK
00 to F4 Write 0 to F4 in MFM
F8 to FB Write F8 to FB in MFM
FC Write FC in MFM
FD Write FD in MFM
FE Write FE in MFM
FF Write FF in MFM
* * *
Type
FORCE INTERRUPT
SETUP: None.
* * *
WD177X Notes
$8B2F - "B-A"
$8B23 - »B-F"
$8B85 - "B-R"
$8BAE - "B-W"
$8BE3 - »B-E"
$8BFA - "B-P"
$8B8E - "B-R"
$8BD1 - "B-W"
$8C7F - 11B-?"
$8C84 - "B-*"
BIT TEXT
BIT TEXT
"AM I LAZY???...NO
JUST WANTED TO SAVE A
FEW MS..."
V, I, /, M, B, U, P,
&, C, R, S, N
V - $FF09 I - $FF0C
/ - $FFOF M - $FF12
B - $FF15 U - $FF18
P - $FF1B & - $FF1E
C - $FF21 R - $FF24
S - $FF27 N - $FF2A
11 (C)1987 COMMODORE
ELECTRONICS LTD., ALL
RIGHTS RESERVED11
( SENDING A "UK"
COMMAND CRASHES THE DRIVE)
Power-up Diagnostics
3 $1000-$lFFF 8K X 8 RAM
* * *
* * *
166K 00 06
143K 00 07
100K 00 10
50K 00 20
25K 00 40
12. 5K 00 80
* * *
NOTE: The HRF and DRF use a fast byte clocked over
the SRQ line.
ADDRESSES FUNCTION
0 TO 3 INTERNAL DEVICES
12 TO 30 UNUSED
ADDRESSES FUNCTION
* * *
ADDRESS DESCRIPTION
* * *
TERM DESCRIPTION
DB DATA BYTE
* * *
* * *
UNLSN
* * *
* * *
HRF LA SA
* * *
HRF TA SA TLKATN
* * *
* * *
* * *
* * *
* * *
ATN
* * *
ATN
1 A
1 A
1 1
A
* * *
I I I I MM MM I 1 I I MM
MM MM MM MM MM
DATA
CLOCK
1581 Bugs
* * *
* * *
RECOMMENDED
* * *
HARDWARE
Software
Thanks...
* * *
Loading Kracker-Mon
* * *
DOS DUMP
* * *
* * *
* * *
Now type:
COMMAND DESCRIPTION
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * ♦
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
*
w
to
■w
If