IDEDOS 0.9x current state

This will be the manual for the 0.9x IDEDOS if it will get usable.

The IDE64 interface cartridge

The IDE64 cartridge is a device for connecting ATA(PI) devices to a C64/C128 like harddisks, CDROMs and ZIP drives. It's plugged into the Expansion Port and connected to the device(s) by a 40 wire cable. The IDE64 cartridge contains a 64Kb PEROM (flash EPROM containing IDEDOS, Machine Code Monitor, File Manager and Setup), a 28kB RAM (used for internal buffers), a realtime clock chip (powered by a battery), two LEDs (to indicate the presence of cartridge and device activity), a Short-BUS for peripherals (like DUART Card) and an ispLSI chip.

CMOS Setup utility

Setup

The IDE64 cartridge has a battery backed up clock with some memory (DS1302) used to store the configuration settings and current time. Of course it works without a battery too using the default settings and no clock. If you do not like the defaults, you can change them here.

You can start the CMOS Setup utility by pressing <- + RESTORE while in interactive mode. (like STOP + RESTORE) Moveing is done with cursor keys, RETURN selects/changes item, + and - also changes item. C= and STOP exits submenu, while C= saves setting and STOP discards them in main menu.

Setup does not touch memory range $0800-$FFFF so your work won't lost when need to change some settings.

Standard setup

Standard setup General stuff.
Date, Time
Here's possible to set the built in clock. This has affect on the DATE command, the file timestamping and on TI$ (see below). The calendar is built in and works in range 1980-2079. (Y2K compatible) The clock ticks while the computer is turned off.
Paper, border, char color
This affect the default blue screen colors. Same paper and char color not accepted. (not readable and may be confusing)
Start boot file
The file called //:BOOT can be autostarted from the boot drive at powerup or allways after reset. The file must be executeable with RUN.
Boot device
The default drivenumber (at $BA) after reset can be selected here. (usefull for the dos wedge, monitor and autobooting)
1541 fastloader
Fastloader for the C1541 floppy drive. (and also fast read/write in manager)
Set basic clock
Sets TI$ to the time in the built in clock.
Keyboard repeat
Sets keyboard repeat after reset. (at $028A)
Lowercase chars
Upper/lowercase chars after reset or STOP + RESTORE
Use dos wedge
You may disable it, if you have JiffyDos installed. For more see below!
C128 keyboard
If cartridge has cartconfig register, support is compiled in, and computer is a C128, it makes use of extra keys on keyboard.

Device numbers

Drive number setup All about device numbers.
LCD display
Device number for LCD display connected to short bus.
Serial device x
Selecting 9 for serial device 8, and 8 for serial device 9 will effectively swap them.
HDD x
Usefull when programs think device number 8 is the only one.
PC-LINK
Virtual drive. Needs serial/parallel cable and a server program on the PC.

Advanced setup

Advanced setup Master/Slave ATA(PI) device configuration.
Power management
Drive spindown time from 1 min to 2 hours in 15 steps. KILL will also spin down the drive if it's enabled. (your device must support power management!)
Retry on error
Tells the device to retry on error.
Write cache
Will speed up writes if supported by device.
Read look-ahead
Will speed up reads if supported by device.
Slow down cdrom
Selects 200 Kb/s data transfer rate on CDROMs supporting this. (deactivates the built in jet simulator on 32x or faster CDROMs if enabled)
Linear read max
Maximal sequential read/write allowed by the device. (setting it lower than 128 will degrade the performance of CFS filesystem greatly!)
You should decrease it from 128 if you get ?LOAD ERROR or ?FILE DATA ERROR when loading/saving a big program. (this is very unlikely)

Restore defaults

Does restore the default settings.

Save & exit

Save changes and exit cmos setup. (same as pressing C=)

Discard & exit

Forget changes and exit setup. (same as pressing STOP)

IDE File Manager

Manager IDE File Manager is a software for copying, deleting, renaming, making directories, and starting programs. Working with this program is very easy. Start it from BASIC typeing command MAN. Maximal number of files is 510/panel.

Keys:

<--Exit
CONTROL-Change panel
UP/DOWN-Move cursor
F1/F7
LEFT/RIGHT
-Page Up/Down
1-Refresh dir
3-Execute viewer plugin from boot drive ("//:VIEWER")
5-Copy file(s)
6-Rename file(s)
7-Create directory
8-Delete file(s)
.-Go into parent dir
/-Go into root dir
DEL-(Un)select file
F2/HOME-Go on top of listing
F8/CLR-Go to end of listing
RETURN-Enter directory or LOAD"file",x RUN or start viewer plugin
SHIFT+RETURN-LOAD"file",x,1
^-Eject/reload media
*-Invert file selection
+-Select all files
--Deselect all files
C=-Select drive


PCLink

Duart/parallel does not work yet.

Monitor

Debug screen The monitor is designed to be fast and simple, but still usefull for debugging and fixing. It's possible to edit every single byte in memory and I/O space without conflicting with internal variables of the monitor itself. Illegal opcodes and wildcard searching is included.
The monitor is started by hitting C= + RESTORE at the same time, or by executing a BRK instruction.
If C128 keyboard is enabled it's possible to use HELP to start the monitor. Ripper mode is activated by pressing the LEFT SHIFT key and the RESET button at the same time. On C128 the VDC registers are expanded at $D600-$D6FF for easier access, the status ($D600) is copied into the 63th register. The VIC, CIA and color ram setting are updated on exit.

Commands:

@"command"
@command
@$
-Disk command or directory
A xxxx NOP-Assemble
B xx-Memory configuration:
00-07: C64
08-1E: Serial device
1F: VDC memory (C128 only)
C start end start2 -Compare memory
D {start {end}}-Disassemble
,start xx xx xx-Write hex data to memory and disassemble
EC {start {end}}-Edit char (binary)
[start xxxxxxxx-Write binary data to memory
ES {start {end}}-Edit sprite (binary)
]start xxxxxxxx-Write binary sprite data to memory
F start end xx-Fill memory with byte
G xxxx-Push BASIC warm start to stack and start program at xxxx, or execute program in serial device
H start end xx ? "txt"-Search hex/any/ascii
I {start {end}}-Dump memory in ascii
'start xxxxxxx-Write ascii data to memory
J {start {end}}-Dump memory in screencode
.start xxxxxxx-Write screencode data to memory
L "name" {start}-Load memory
M {start {end}}-Dump memory in hex and ascii
O xx-Actual drive
:start xx xx xx xx-Write hex data to memory
R-Show registers (including program counter)
;xxxx xx xx-Change registers
S "name" start end-Save memory
T start end start2-Copy memory
V "name" {start}-Verify memory
X-Continue program
Q-Exit to BASIC warm start (usefull after hitting a BRK)


Kernal calls

OPEN

Works for error channel and directory read for CFS/v0.02. File read only for CFS filesystem.

CLOSE

Works. Does update $98 for tape/rs232. If stdin or stdout used a closed file, it's redirected to /dev/null and /dev/zero (actually dev/$c7)

CLRCHN

Works. Does update $99/$9a for non-IDE64 files.

CHKIN

Works. Does update $99 for non-IDE64 files.

CHKOUT

Works. Does update $9a for non-IDE64 files.

CHRIN

Works for error channel and CFS/v0.02 directory read. Does use $A4-$A5.

GETIN

Works for error channel and CFS/v0.02 directory read. Does use $A4-$A5. Fixed raster bug with intros/programs using it to scan keyboard.

CHROUT

Works for error channel. Does use $A4-$A5. Did some optimization to console printing ;-)

CLALL

Same effect like the kernal one, however closeing the files real would be better.

LOAD

Works on CFS, for v0.02 dir read only. Loads allways into RAM except loading address starts in range $D800-$DBFF.
Gives "OUT OF MEMORY" if: For verify set $01 to be able to verify RAM in range $A000-$BFFF. Verifying RAM in range $D000-$FFFF is not possible.

SAVE

Does not work. (for drive 14 it actually does, but not usefull for test)
Gives "FILE DATA ERROR" if problem happened while saving.
Set $01 to be able to save RAM in range $A000-$BFFF. Saving RAM in range $D000-$FFFF is not possible.

BLKREAD

Works on CFS files, but is buggy.

BLKWRITE

Does not work.

Command channel

UI or U9

Works.

UJ or U:

Buggy.

U0> (drive number change)

Works.

U0>P (Power management)

Works.

cP or CP (partition change)

Works.

U0>E (Eject/Load media)

Works.

U0>L (Lock/Unlock media)

Works.

I (Initialize)

Buggy.

C or CD (Change workdir)

Works.

Command channel error messages

00, OK,000,000,000,000

No error since last action.

02, PARTITION SELECTED,XXX,000,000,000

Partition number #XXX was selected.

20, READ ERROR,DP1,DP2,DP3,DP4

Unrecoverable read error. Maybe a defective disk.
DP1,DP2,DP3,DP4 is drive specific address of sector.

21, READ ERROR,DP1,DP2,DP3,DP4

Timeout during read.

23, READ ERROR,DP1,DP2,DP3,DP4

Problem with data checksumm.

26, WRITE PROTECT ON,000,000,000,000

Write protected file/dir/partition/media.

29, DISK CHANGED,000,000,000,000

Disk change detected.

30, SYNTAX ERROR,000,000,000,000

Syntax error in command. (something is missing...)

31, UNKNOWN COMMAND,000,000,000,000

Unknown/unimplemented command.

32, SYNTAX ERROR,000,000,000,000

Command buffer overflow.

33, SYNTAX ERROR,000,000,000,000

Illegal character in filename.

34, SYNTAX ERROR,000,000,000,000

Missing filename.

39, PATH NOT FOUND,000,000,000,000

Path not found.

62, FILE NOT FOUND,000,000,000,000

File not found in directory.

67, ILLEGAL REQUEST,DP1,DP2,DP3,DP4

Sector's address out of range. (corrupted diskformat while reading not closed file)

71, DIR ERROR,DP1,DP2,DP3,DP4

No directory header found.

73, IDE DOS Vx.xx IDE64,DP1,DP2,DP3,DP4
73, IDE DOS Vx.xx CDROM,DP1,DP2,DP3,DP4
73, IDE DOS Vx.xx ZIP64,DP1,DP2,DP3,DP4

Dos version, and drive type.

74, DRIVE NOT READY,000,000,000,000

No disk in drive.

75, FORMAT ERROR,000,000,000,000

Disk not in known format. Use format command/utility.

77, SELECTED PARTITION ILLEGAL,XXX,000,000,000

Partition number #XXX not found/illegal.

BASIC extension

Optimization is quite good. No slowdown for my prime calculator ;-)

HDINIT

Works partially. Currently there's no way to tell it which drives to detect, it just probes all.

INIT

Works. ;-) Fills memory with nulls, then reset.

DATE

Works. Prints date.
Example:
DATE
SUN MAY 19 13:43:26 2002

READY.

KILL

Switches cartridge off.
Example:
KILL
BYE!

READY.

LOAD

Useing no device number selects last used device. No filename means "*".
Example:
LOAD"$",8

SEARCHING FOR $
LOADING $0801-$099E
READY.

SAVE

Useing no device number selects last used device.
Example:
SAVE"TEST",8

SAVING TEST $0801-$1A43
READY.

VERIFY

Useing no device number selects last used device. No filename means "*".
Example:
VERIFY"TEST",8

SEARCHING FOR TEST
VERIFYING $0801-$1A43
OK

READY.

DOS Wedge

@ (disk command, error channel)

Works, does not return imediatly after sending command to serial bus.

@# (select default drivenumber)

Works, does not detect missing drives.

@$ (display directory)

Works. RUN/STOP too.

/ (load basic)

Works.

% (load assembly)

Works.

' (verify assembly)

Works. No OK message if succesfull.

^ (load and run)

Works, if error happens still typeing rU:

<- (save basic)

Works.

Compatibility FAQ

Commodore serial devices

Of course they work. Will include 1541 fastloader later.

SuperCPU

Should work, not tested on real hardware, only on emulated. The SCPU IDEDOS expects emulation mode with directpage starting at the 0th byte of bank 0, like normal. The high byte of register A is not preserved during operation.

RamLink, RetroReplay, Action Replay, Final cartridge

These hardwares use the same I/O space as the IDE64 cartridge, so they won't work.

CMD HD/FD/etc. (serial)

As these are serial devices they should work. They are supported by the manager too.

C128

Works in C64 mode. Inits VDC, clears $D02F-$D030. The cartridge is not designed for 2MHz operation, so do not call IDE64 routines in 2MHz mode! C128 keyboard is available if cartridge has cartconfig register and support is compiled in. (Num pad, cursor keys, esc, tab, linefeed are available, help calls monitor, alt and noscroll unused)

JiffyDOS

It's detected. (tested with v6.01) @#<device> does not work with IDE64 drives without DOS Wedge enabled. (but always uses last accessed drive) With DOS Wedge features are missing ;-) JiffyDos fastload is disabled (meaning 1/3 loading performance on 1541)

NTSC/PAL

Both works.

REU

Works, not touched.

Second SID

Supported if installed at $D438 or $D618. (volume 0 is set)

+60K

Works, not touched.

Software

Could run everything that worked with older IDEDOS and only required read only mode ;-) Ok, until almost everything is not done yet I do not speak about this...
Forget about autostarting programs...

-Soci/Singular-

Document maintained by:

Kajtár Zsolt
Szigliget
Hóvirág u.15.
8264
Hungary
mail: soci at c64.rulez.org